RabbitMQ Bundle: одна очередь & amp; несколько рабочих

В настоящее время я пытаюсь использовать RabbitMQ (с отличным RabbitMQBundle) для обработки большого количества асинхронной работы.

Цель состоит в том, чтобы иметь одну очередь для публикации сообщений одного типа и чтобы работники X на нескольких серверах могли одновременно просматривать сообщения.

Каждый работник должен просмотреть одно сообщение, выполнить работу, затем посмотреть другое сообщение и т. Д.

Вот мой конф:

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: потребитель generate_report как 10 раз, но когда я смотрю свой лог-файл, у меня есть только сообщение каждые 120, и цель состоит в том, чтобы иметь 10!

Я также попытался установить свою очередь как тему или прямую с теми же результатами.

Я не понимаю, что я делаю неправильно: ‘(

заранее спасибо

С уважением

2

Решение

Я испытал ту же проблему. Что вы можете сделать, это установить количество сообщений, полученных 1.

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

http://www.rabbitmq.com/tutorials/tutorial-two-php.html , см. раздел Справедливая отправка.

1

Другие решения

Других решений пока нет …