Frage

Ich bin in dem Prozess ActiveMQ und Kamel des Lernens mit dem Ziel, ein kleines Prototyp-System zu schaffen, das so etwas wie dies funktioniert:


(Quelle: paulstovell.com )

(big)

Wenn ein Auftrag in der Orders System platziert wird, wird eine Nachricht an alle Abonnenten versandt (a pub / sub-System), und sie können in die Bearbeitung des Auftrages ihre Rolle spielen. Die Aufträge Versand und Abrechnung Anwendungen ihre eigenen ActiveMQ Installationen haben, so dass, wenn eine der drei Systeme offline sind, können die anderen weiter Funktion. Etwas kümmert sich um Nachrichten zwischen den ActiveMQ Installationen bewegen.

Erste Apache Camel Nachrichten von einer Warteschlange zur anderen über Routen zu bewegen ist ganz einfach, wenn sie auf dem gleichen ActiveMQ Instanz sind. So Dies funktioniert für die Abonnement-Warteschlangen verwalten.

Die nächste Herausforderung ist, dass Nachrichten von einer ActiveMQ Instanz in einer anderen schieben, und es ist das Bit, wo ich bin nicht sicher, was am nächsten zu suchen.

  1. Can Camel Route zwischen verschiedenen ActiveMQ Installationen? (Ich kann nicht herausfinden, was das JMI Endpunkt URI wäre, wenn sie auf verschiedene Maschinen sind).
  2. Ich verstehe ActiveMQ hat store and forward Fähigkeiten. Ist das, was ich würde Nachrichten zwischen Bestellungen und Versand / Fakturierung?
  3. bewegen
  4. Oder ist es das, was Apache ServiceMix gemeint ist, zu lösen?
War es hilfreich?

Lösung

Dies ist eine ziemlich einfache asynchrone, ereignisgesteuerte Anwendung, die gut geeignet ist für ActiveMQ und Camel.

Eigentlich bewegen Sie keine Nachrichten explizit von einer ActiveMQ Instanz zu einem anderen. Die Funktionsweise ist mit, was als Netzwerk von Brokern . In Ihrem Fall müssen Sie drei Makler: ActiveMQ-lila, ActiveMQ-grün und ActiveMQ-blau. ActiveMQ-lila schafft ein unidirektionale Broker-Netzwerk mit ActiveMQ-grün und ActiveMQ-blau. Dies ermöglicht ActiveMQ-lila zu Store-and-Forward-Nachrichten an ActiveMQ-grün und ActiveMQ-blau bezogen auf die Nachfrage der Verbraucher.

Die Orders App nimmt Bestellungen auf der Bestellungen Warteschlange auf ActiveMQ-lila. Die Aufträge App nutzt Camel zu konsumieren und eine Nachricht zu verarbeiten, um zu bestimmen, ob es sich um eine Rechnungsnachricht oder eine Versandnachricht ist. Camel leitet die Meldungen an der Rechnungs Warteschlange oder die Versandwarteschlange auf ActiveMQ-lila.

Die Nachfrage der Verbraucher kommt von der Rechnungsstellung App und der Versand App. Die Abrechnung verwendet Camel Nachrichten aus der Fakturierung Warteschlange auf ActiveMQ-grün zu konsumieren. Der Versand App verwendet Camel Nachrichten aus der Versandwarteschlange auf ActiveMQ-blau zu konsumieren. Wegen des Broker-Netzwerkes und wegen der Nachfrage der Verbraucher auf der ActiveMQ-green.invoicing Warteschlange und die ActiveMQ-blue.shipping Warteschlange, Nachrichten werden von ActiveMQ-lila auf den entsprechenden Broker und Warteschlange weitergeleitet werden. Es besteht keine Notwendigkeit, explizit Nachrichten an bestimmten Broker.

Ich hoffe, das beantwortet Ihre Fragen. Lassen Sie mich wissen, wenn Sie mehr haben.

Bruce

Andere Tipps

Hmmmm, ich habe nur bestenfalls ausprobiert, und nicht für eine ganze Weile, aber ich werde versuchen und bieten etwas.

ActiveMQ routen kann zwischen verschiedenen Installationen und verwendet nur Standard-URIs meines Wissens so bin ich nicht sicher, was das Problem hier ist. Ich würde denken, dass TCP Sie in Ordnung sein würde. Mit ServiceMix (Sie es erwähnen später) Sie würden nur eine connection angeben und dann dadurch, dass die URI bereitstellen. Dieser Link zeigt einige Beispiele http://servicemix.apache.org/servicemix-jms -neue-endpoints.html .

hat Camel Unterstützung für Durable Subscriber wenn das, was Sie waren nach ( http: // Kamel. apache.org/durable-subscriber.html )? Dieses Muster wird sichergestellt, dass, wenn die Teilnehmer offline sind, wenn die Nachricht fertig ist, wird es gehalten, bis die Teilnehmer wieder online ist. Dies wird auch durch ServiceMix (siehe Link oben angegebenen und sucht ‚subscriptionDurable‘ unterstützt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top