RabbitMQ Bundle:一个队列&多个工人

时间:2014-11-03 11:13:15

标签: php symfony rabbitmq amqp

我目前正在尝试使用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!

我还试图将我的队列设置为主题或直接使用相同的结果。

我不明白我做错了什么:'(

提前致谢

亲切的问候

1 个答案:

答案 0 :(得分:1)

我遇到过同样的问题。您可以做的是将提取的消息数设置为1。

$channel->basic_qos(null, 1, null);

http://www.rabbitmq.com/tutorials/tutorial-two-php.html,请参阅公平派遣部分。