我不确定这是否可能:为同一个队列拥有一个信使消费者池?
我尝试使用 Redisconsumer=
选项,但事实并非如此。
也许“池”中间件可以对特定传输进行一些路由?
我不确定这是否可能:为同一个队列拥有一个信使消费者池?
我尝试使用 Redisconsumer=
选项,但事实并非如此。
也许“池”中间件可以对特定传输进行一些路由?
是的,您为一个队列使用多个消费者。Symfony Messenger 旨在拥有多个消费者。文档主管部分的示例配置已经有 2 个实例:
主管配置文件通常位于 /etc/supervisor/conf.d 目录中。例如,您可以在那里创建一个新的 messenger-worker.conf 文件,以确保 2 个 messenger:consume 实例始终在运行:
(..)
因此,您可以bin/console messenger:consume async
多次运行,并且在大多数情况下,无需额外配置即可运行。有一个关于使用 Redis Transport 和多个 worker 的警告:
如果您使用 Redis Transport,请注意每个工作人员需要一个唯一的使用者名称,以避免多个工作人员处理相同的消息。实现此目的的一种方法是在 Supervisor 配置文件中设置一个环境变量,然后您可以参考
messenger.yaml
(请参阅上面的 Redis 部分):
environment=MESSENGER_CONSUMER_NAME=%(program_name)s_%(process_num)02d