管理消息队列

您可以使用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>
...
INFO
检查消息队列的频率取决于您的业务逻辑和可用的系统资源。 通常,您可能希望检查新客户,并比更耗费资源的过程(如更新目录)更频繁地发送欢迎电子邮件。 您应根据业务需求定义cron计划。
它可以在管理员商店>设置>配置>高级>系统> Cron配置选项中针对组进行配置:消费者。
有关将cron与Commerce结合使用的详细信息,请参阅配置和运行cron

您还可以使用进程管理器(如主管)来监视进程的状态。 管理员可以使用命令行根据需要重新启动进程。

配置

默认行为

  • Cron作业consumers_runner已启用
  • Cron作业consumers_runner运行所有已定义的使用者
  • 每个使用者处理消息10000然后终止
INFO
如果您的Adobe Commerce存储托管在Cloud平台上,请使用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 — 一个字符串数组,指定要运行的使用者。 空数组运行​ 所有 ​使用者。

  • multiple_processes — 键值对的数组,指定要在多少个进程中运行的使用者。 在Commerce 2.4.4或更高版本中受支持。

    note info
    INFO
    不建议在MySQL操作的队列上运行多个使用者。 有关详细信息,请参阅将消息队列从MySQL更改为AMQP
    note info
    INFO
    如果您的Adobe Commerce存储托管在Cloud平台上,请使用CONSUMERS_WAIT_FOR_MAX_MESSAGES配置使用者如何处理来自消息队列的消息。

请参阅启动消息队列使用者

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c