В настоящее время я пытаюсь использовать 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!
Я также попытался установить свою очередь как тему или прямую с теми же результатами.
Я не понимаю, что я делаю неправильно: ‘(
заранее спасибо
С уважением
Я испытал ту же проблему. Что вы можете сделать, это установить количество сообщений, полученных 1.
$channel->basic_qos(null, 1, null);
http://www.rabbitmq.com/tutorials/tutorial-two-php.html , см. раздел Справедливая отправка.
Других решений пока нет …