我想我有一个简单的问题,但我无法回答: 如何一次运行多个消费者? 例如,我有3个消费者
consumers:
rename_image_folder: ...
update_customer: ...
create_protocol: ...
如何立即运行它们?我必须打开3个控制台窗口并运行它们?但在我们的项目中,我们有10个微服务api,每个至少有一个消费者。我该如何使用它?
我相信我,我们有办法如何制作它。例如,我有不同的 routing_key ,我必须为处理队列编写不同的方法(或服务)。也许还有另一种处理它的方法。
如果你申请一个例子,那将是非常好的。谢谢!
答案 0 :(得分:2)
不同的消费者会说不同的php进程,这意味着你可以扩大增加消费者添加更多消耗队列消息的php进程的数量。
我建议你使用像Supervisord这样的工具来控制php进程的数量并处理进程的状态。
例如,您可以使用php进程数(numprocs
元素)配置一个简单的supervisord进程:
[supervisord]
logfile = /tmp/supervisord.log
logfile_maxbytes = 10MB
directory = %(here)s
pidfile = /tmp/supervisord.pid
[program:todo]
command = php /var/www/symfony/bin/console rabbitmq:consumer -w sync
autostart = true
autorestart = true
numproc=5
希望这个帮助
答案 1 :(得分:1)
您需要使用this one之类的捆绑包并在您的服务器上安装supervisord。该捆绑包将处理从您的rabbitmq设置创建supervisord配置文件,让您的不同消费者自动生存。
我已经使用此捆绑包和php-amqplib/rabbitmq-bundle