human-element / module-advanced-message-queue-options

该包最新版本(0.0.1)没有可用的许可信息。

允许高级配置消息队列系统的模块

0.0.1 2019-10-11 20:05 UTC

This package is auto-updated.

Last update: 2024-09-10 20:54:28 UTC


README

此模块添加了在var目录下设置消息队列消费者PID目录的功能。

这样您就可以共享该目录,并且在部署之间不会丢失PID的跟踪。

它还提供了一个CLI命令来创建更新的毒丸版本。

这允许您在部署结束时选择让Magento重新启动消费者。

还建议安装补丁以获取consumers_wait_for_messages功能,这样即使在部署之间没有要处理的消息,毒丸也不会杀死进程。您将知道会启动一个新的进程,该进程具有您的新部署目录。

安装

composer require human-element/module-advanced-message-queue-options
php bin/magento module:enable HumanElement_AdvancedMessageQueueOptions
php bin/magento setup:upgrade

将消费者PID更改到目录中

您可以使用以下env.php中的选项将消息消费者PID更改到var下的目录

return array (
    'cron_consumers_runner' => array(
        'pid_dir' => 'mqpid'
    )
);

这将把消息队列PID放入var/mqpid,而不是var的根目录

这将把新的毒丸版本放入数据库,导致所有消费者在下一个消息时重启进程

php bin/magento he:queue:consumers:poison

推荐补丁

这是补丁文件

composer补丁json配置

{
  "patches": {
    "magento/framework-message-queue": {
      "Adds message queue option consumers_wait_for_messages from https://github.com/magento/magento2/commit/4e960c31bf345f59a4eccc16832a3a737d4ce8b8 ": "patches/composer/message-consumer-wait-for-messages-option.patch"
    }
  }
}

补丁使用

这将在env.php中添加consumers_wait_for_messages选项

return array (
    'queue' => array(
        'consumers_wait_for_messages' => false
    )
);

此选项修复了运行时间过长的消费者引起的问题,但它也导致另一个问题,即使用不必要的内存来创建每小时自我杀死进程:[链接](https://github.com/magento/architecture/pull/232/files)。修复了一个问题但引起了另一个,至少目前,上述建议是检测是否有消息,并且只有当它们存在时才创建消费者选项。

相关问题

magento/magento2#23540

magento/magento2#17951

magento/community-features#181

magento/architecture#232

https://github.com/magento/magento2/commit/4e960c31bf345f59a4eccc16832a3a737d4ce8b8