AMQP-Netze mit Style RPC
Siehe auch Bereich AMQP-Verbindungen.
Hier soll etwas genauer auf die Dynamik des AMQP-Styles RPC eingegangen werden. In dieser speziellen Darstellung zeigen wir Lobster_data als Producer und Consumer. Dies dient vor allem der Darstellung der besonderen Einstellungen, die im Eingangsagenten AMQP (siehe dort) und Antwortweg AMQP (siehe dort) für den Style RPC zu beachten sind, es ist also eine relativ bequeme Möglichkeit zum Testen. In der "echten" Welt wird Lobster_data oft nur entweder als Producer oder als Consumer auftreten. Lassen Sie sich davon also nicht verwirren. Zudem soll hier einfach generell angedeutet werden, wie Netze dieser Art aufgebaut werden können.
Hinweis: Wir sprechen hier bewusst von AMQP-Nachrichten (und nicht AMQP-Messages), um keine sprachliche Überschneidung zu schaffen mit den internen Messages in Lobster_data (Antwortweg Message, Eingangsagent Message oder auch Weiterleitungen an Folgeprofile). Das Prinzip ist ähnlich, aber es handelt sich hier um zwei verschiedene Arten von Messages. In diesem Sinne könnten Sie eine Architektur, wie unten beschrieben, sinnvollerweise auch mit internen Lobster_data-Messages aufbauen. Das ist schneller und erspart Ihnen auch die Verwendung externer AMQP-Server.
(1) Wenn Sie per Style RPC eine Nachricht (hier mit einem Profil mit einem Antwortweg AMQP) an einen AMQP-Server auf eine bestimmte Queue (hier xyz) senden, dann fordert Lobster_data intern (das müssen Sie nicht explizit machen) eine (eindeutige) temporäre Queue an (der Name, hier abc, wird automatisch vergeben und kann nicht beeinflusst werden), die dann danach von Ihrem Profil "abgehört" wird, bis eine Nachricht erscheint (die RPC-Response). Zudem wird (auch intern) eine Correlation-ID vergeben, anhand derer die richtige Response identifiziert werden kann. Schicken Sie also eine RPC-Request-Nachricht mit Correlation-ID 1, dann warten Sie auf eine RPC-Response-Nachricht mit Correlation-ID 1.
(2) Ein Profil mit Eingangsagent AMQP holt als Consumer die Nachricht von der Queue xyz. Im Profil erzeugen Sie dann die RPC-Response (nach Belieben). Es muss danach im Antwortweg die Eigene Klasse PassBackDataResponse verwendet werden. Diese sendet dann die RPC-Response-Nachricht zurück an den AMQP-Server auf die temporäre Queue abc. Siehe auch (3).
(3) Ihr ursprüngliches Profil, siehe (1), konsumiert nun die Nachricht aus (2) (also die RPC-Response-Nachricht auf Queue abc und Correlation-ID 1). Hinweis: Die Correlation-ID muss identisch sein.
(4) Da der Antwortweg AMQP die Response aus (3) nicht selbst verarbeiten kann, wird Sie an ein Folgeprofil (mit Eingangsagent Message) weitergegeben, um dann dort (nach Belieben) verarbeitet zu werden.
Hinweis: Technische Details (deren Kenntnis wir hier bis zu einem gewissen Grad voraussetzen müssen) können Sie (für RabbitMQ) auch hier, hier und hier nachlesen.