1

我们有一个简单的用例:我们需要按顺序消费队列中的消息(消息 #1 在消息 #2 开始执行之前完成执行)。

Symfony 文档中建议的主管配置是:

;/etc/supervisor/conf.d/messenger-worker.conf
[program:messenger-consume]
command=php /path/to/your/app/bin/console messenger:consume async --time-limit=3600
user=ubuntu
numprocs=2
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d

是否numprocs=2意味着 2 个工作人员将“同时”使用消息,即工作人员 2 将在消息 #1 完成之前开始执行消息 #2?

如果是,有没有办法让 2 个工作人员(如果我们需要同时执行其他一些消息类型)并且仍然让这种特定类型的消息按顺序执行?

4

1 回答 1

2

如果您需要按严格的顺序处理消息,那么拥有多个消费者进程会带来什么好处?

进程 2 总是需要等待 1 完成......所以本质上不会有多个进程同时运行。无论您运行多少进程,都不会获得并行优势,因为它们会有效地相互阻塞。

如果您需要以严格的顺序处理队列消息,只需使用单个消费者进程。

于 2020-03-27T15:34:07.573 回答