メッセージキューの管理
cron ジョブまたは外部プロセスマネージャーを使用して、コマンドラインからメッセージキューを管理し、消費者がメッセージを取得していることを確認できます。 これは、RabbitMQ (AMQP)、Apache ActiveMQ Artemis (STOMP)、MySQL アダプタなど、サポートされているすべてのメッセージブローカーに適用されます。
プロセス管理
Cron ジョブは、消費者を再起動するためのデフォルトのメカニズムです。 cronによって開始されたプロセスは、指定された数のメッセージを消費してから終了します。 cronを再実行すると、コンシューマーが再起動します。
次の例は、実行中のコンシューマーのcrontab設定を示しています。
/app/code/Magento/MessageQueue/etc/crontab.xml
...
<job name="consumers_runner" instance="Magento\MessageQueue\Model\Cron\ConsumersRunner" method="run">
<schedule>* * * * *</schedule>
</job>
...
cronのスケジュールを定義する必要があります。cronの使用について詳しくは、cronの設定と実行を参照してください。スーパーバイザーなどのプロセスマネージャーを使用して、プロセスのステータスを監視することもできます。 マネージャーはコマンドラインを使用して、必要に応じてプロセスを再起動できます。
設定
デフォルトでの動作
- Cron ジョブ
consumers_runnerが有効です - Cron ジョブ
consumers_runnerは、定義済みのすべてのコンシューマーを実行します - 各コンシューマーは、メッセージ 10000処理してから終了します
CRON_CONSUMERS_RUNNERを使用してconsumers_runner cron ジョブを設定します。特定の設定
/app/etc/env.php ファイルを編集して、cron ジョブ consumers_runnerを設定します。
...
'cron_consumers_runner' => [
'cron_run' => false,
'max_messages' => 20000,
'consumers' => [
'consumer1',
'consumer2',
],
'multiple_processes' => [
'consumer1' => 4
]
],
...
-
cron_run-consumers_runnercron ジョブを有効または無効にするブール値(デフォルト =true)。 -
max_messages– 各コンシューマーが終了前に処理する必要があるメッセージの最大数(デフォルト =10000)。 お勧めしませんが、0を使用して、消費者が終了するのを防ぐことができます。 消費者がメッセージキューからメッセージを処理する方法を設定するには、consumers_wait_for_messagesを参照してください。 -
consumers– 実行するコンシューマーを指定する文字列の配列。 空の配列は all 個の消費者を実行します。 -
multiple_processes- プロセス数で実行するコンシューマーを指定するキーと値のペアの配列。 Commerce 2.4.4以降でサポートされています。note info INFO MySQLが操作するキューで複数のコンシューマーを実行することはお勧めしません。 AMQP (RabbitMQ)またはSTOMP (ActiveMQ Artemis)への切り替えについて詳しくは、MySQLから外部ブローカーへのメッセージキューの変更を参照してください。 note info INFO Adobe Commerce ストアがCloud Platform上でホストされている場合は、 CONSUMERS_WAIT_FOR_MAX_MESSAGESを使用して、消費者がメッセージキューからメッセージを処理する方法を設定します。note NOTE ActiveMQ Artemis (STOMP)は、Adobe Commerce 2.4.5以降で導入されました。
開始メッセージキューコンシューマーを参照してください。