进程数是否会影响 Messenger 的顺序执行?

Does number of processes affect sequential execution for Messenger?

我们有一个简单的用例:我们需要按顺序使用队列中的消息(消息 #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 个工作人员将使用消息 "simultaneously",即工作人员 2 将在消息 #1 完成之前开始执行消息 #2?

如果是,有什么方法可以保留 2 个 worker(如果我们需要同时执行其他消息类型)并且仍然按顺序执行该特定类型的消息?

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

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

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