我目前正在尝试使用RabbitMQ(使用优秀的RabbitMQBundle)来处理大量的异步工作。
目标是让一个队列发布相同类型的消息,并让多个服务器上的X工作者同时查看消息。
每个工作人员都必须查看一条消息,完成工作,然后查看另一条消息等。
这是我的conf:
old_sound_rabbit_mq:
connections:
default:
host: 'localhost'
port: 5672
user: 'myuser'
password: 'mypassword'
vhost: '/'
lazy: false
producers:
generate_report:
connection: default
exchange_options: { name: 'gen_report', type: fanout }
consumers:
generate_report:
connection: default
exchange_options: { name: 'gen_report', type: fanout }
queue_options: { name: 'gen_report' }
callback: generator.report.consumer
在我的消费者中,我在日志文件中有一个条目,睡眠时间为120秒。
我开始 php app / console rabbitmq:consumer generate_report 10次,但是当我查看我的日志文件时,我每次只有120条消息,目标是10!
我还试图将我的队列设置为主题或直接使用相同的结果。
我不明白我做错了什么:'(
提前致谢
亲切的问候
答案 0 :(得分:1)
我遇到过同样的问题。您可以做的是将提取的消息数设置为1。
$channel->basic_qos(null, 1, null);
http://www.rabbitmq.com/tutorials/tutorial-two-php.html,请参阅公平派遣部分。