RabbitMQ wartet, bis mehrere Warteschlangen beendet sind
Ok hier ist eine Übersicht über das, was los ist:
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
Ich habe also eine Vermittlungsstelle, die in mehrere Warteschlangen pusht. Jede Warteschlange hat eine Aufgabe. Sobald alle Aufgaben erledigt sind, kann Warteschlange 4 erst gestartet werden.
Eine Nachricht mit der eindeutigen ID 1234 wird an die Vermittlungsstelle gesendet. Die Vermittlungsstelle leitet sie an alle Aufgabenwarteschlangen (Q1, Q2, Q3 usw.) weiter. Wenn alle Aufgaben für die Nachrichten-ID 1234 abgeschlossen sind, führen Sie Q4 für die Nachricht aus id 1234.
Wie kann ich das umsetzen?
Mit Symfony2, RabbitMQBundle und RabbitMQ 3.x
Ressourcen:
http://www.rabbitmq.com/tutorials/amqp-concepts.htmlhttp://www.rabbitmq.com/tutorials/tutorial-six-python.htmlUPDATE # 1
Ok, ich denke das ist was ich suche:
https://github.com/videlalvaro/Thumper/tree/master/examples/parallel_processingRPC mit paralleler Verarbeitung, aber wie lege ich die Korrelations-ID als meine eindeutige ID fest, um die Nachrichten zu gruppieren und auch zu identifizieren, welche Warteschlange?