メッセージキューの管理

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>
...
INFO
メッセージキューを確認する頻度は、ビジネスロジックと利用可能なシステムリソースによって異なります。 一般的に、カタログの更新など、リソースを集約するプロセスよりも、新規顧客を確認し、ウェルカムメールをより頻繁に送信する必要があります。 ビジネスニーズに応じてcronのスケジュールを定義する必要があります。
この設定は、管理者ストア / 設定/設定/詳細/システム/Cron グループの設定オプション(コンシューマー)で行うことができます。
Commerceでのcronの使用について詳しくは、cronの設定と実行を参照してください。

スーパーバイザーなどのプロセスマネージャーを使用して、プロセスのステータスを監視することもできます。 マネージャーはコマンドラインを使用して、必要に応じてプロセスを再起動できます。

設定

デフォルトでの動作

  • Cron ジョブ consumers_runnerが有効です
  • Cron ジョブ consumers_runnerは、定義済みのすべてのコンシューマーを実行します
  • 各コンシューマーは、メッセージ 10000処理してから終了します
INFO
Adobe Commerce ストアがCloud Platform上でホストされている場合は、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が操作するキューで複数のコンシューマーを実行することはお勧めしません。 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以降で導入されました。

開始メッセージキューコンシューマーを参照してください。

recommendation-more-help
commerce-operations-help-configuration