Хорошо, вот обзор того, что происходит:
M <-- Message with unique id of 1234
|
+-Start Queue
|
|
| <-- Exchange
/|\
/ | \
/ | \ <-- bind to multiple queues
Q1 Q2 Q3
\ | / <-- start of the problem is here
\ | /
\ | /
\|/
|
Q4 <-- Queues 1,2 and 3 must finish first before Queue 4 can start
|
C <-- Consumer
Итак, у меня есть обмен, который подталкивает к нескольким очередям, каждая очередь имеет задачу, как только все задачи будут завершены, только тогда можно запустить Queue 4.
Таким образом, сообщение с уникальным идентификатором 1234 отправляется на биржу, обмен направляет его ко всем очередям задач (Q1, Q2, Q3 и т.д.), когда все задачи для идентификатора сообщения 1234 завершены, запустите Q4 для идентификатора сообщения 1234.
Как это реализовать?
Использование Symfony2, RabbitMQBundle и RabbitMQ 3.x
Ресурсы
- http://www.rabbitmq.com/tutorials/amqp-concepts.html
- http://www.rabbitmq.com/tutorials/tutorial-six-python.html
ОБНОВЛЕНИЕ # 1
Хорошо, я думаю, что это то, что я ищу:
RPC с параллельной обработкой, но как установить идентификатор корреляции для моего уникального идентификатора для группировки сообщений, а также определить, какая очередь?