メッセージキューの管理
Cron ジョブまたは外部プロセスマネージャーを使用して、コマンドラインからメッセージキューを管理し、コンシューマーがメッセージを確実に取得できるようにします。
プロセス管理
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 の設定と実行を参照してください。Supervisor などのプロセスマネージャーを使用して、プロセスのステータスを監視することもできます。 マネージャーは、コマンドラインを使用して、必要に応じてプロセスを再起動できます。
設定
デフォルトの動作
- 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_runner
cron ジョブを有効または無効にするブール値(デフォルトはtrue
)。 -
max_messages
– 各消費者が終了するまでに処理する必要があるメッセージの最大数(デフォルト =10000
)。 推奨はしませんが、0 を使用して消費者が終了するのを防ぐことができます。 コンシューマーがメッセージキューからのメッセージを処理する方法を設定するconsumers_wait_for_messages
法を参照してください。 -
consumers
– 実行するコンシューマーを指定する文字列の配列。 空の配列が all コンシューマーを実行します。 -
multiple_processes
- プロセス数で実行するコンシューマーを指定するキーと値のペアの配列。 Commerce 2.4.4 以降でサポートされます。note info INFO MySQL 操作キューで複数のコンシューマーを実行することはお勧めしません。 詳しくは、MySQL から AMQP へのメッセージキューの変更を参照してください。 note info INFO Adobe Commerce ストアがクラウドプラットフォーム上にホストされている場合は、 CONSUMERS_WAIT_FOR_MAX_MESSAGES
を使用して、コンシューマーがメッセージキューからのメッセージを処理する方法を設定します。
メッセージキューコンシューマーの開始を参照してください。