Apache Camel Produzenten und Konsumenten
-
22-09-2019 - |
Frage
Ich habe Schwierigkeiten Einwickeln meinen Kopf um das Konzept.
Ich versuche, einen Endpunkt, der zuhört auf einem TCP-Port für eingehende Nachrichten in einem proprietären Format zu implementieren, die dann die Nachricht verwandeln würden und haben Kamel die Weiterleitung übernehmen und weiterzuleiten.
Habe ich das richtig verstehe, dass der Produzent verantwortlich für die Nachrichten in das Endpoint
Senden und die Consumer
erhält von diesem Endpunkt?
Wenn Sie die Schnittstellen des Studiums konnte ich nicht den Nachrichtenfluss zwischen diesen Objekten herauszufinden, vor allem auf den Verbraucher Teil. Consumer
nur definiert start()
und stop()
Methoden ...
Wenn Sie einen Test auf einem Skelett Implementierung einrichten, aufgerufen Camel
createProducer()
auf dem Endpunkt und process()
auf dem Hersteller-Objekt. Danach kehrte er, swithout mit dem Verbraucher oder dem Prozessor damit verbundenen etwas zu tun.
Könnte jemand Punkt mich in die richtige Richtung?
Lösung 2
ich es endlich herausgefunden, indem man die Stream-Komponente suchen.
Es stellte sich heraus, dass ich den Fehler des Denkens über den Endpunkt als etwas Gemachtes zentrale durch die alles gehen muss.
Die einfache Antwort ist, dass die Verbraucherdaten von einem externen System empfängt (auf einem Server-Socket in meinem Fall hören) und der Hersteller sendet die Daten an das externe System.
Da mein Endpunkt schreibgeschützt ist (es wird nicht als die endgültige Bestimmung des Camel-Routing-Prozesses verwendet werden), ich habe nicht wirklich einen Produzenten braucht (es sollte eine Runtime werfen, wenn das System immer noch versucht, es zu tun, wegen Fehlkonfiguration ). Ein passendes Beispiel wäre das Kamel-Atom Endpunkt -. Sie Feeds aber (ab 1.6.0) lesen Sie kann man nicht veröffentlichen
Ebenso brauchen Sie nur einen Produzenten für einen Nur-Schreib-Endpunkt, die Daten von einem externen System nicht (z logging) erhalten.
Andere Tipps
Es ist wichtig, sich daran zu erinnern, dass ein Endpoint
von einem Component
erstellt (das heißt Endpoint Factory), kann in sitzen entweder Ende eines Camel Route
. Wenn Sie setzen die Komponente zu Beginn einer Route dann muss es eine Implementierung des Consumer
Teil der Komponente sein. Dies macht die Arbeit der spezifischen Eingabe / Anfrage Umwandlung (wie eine HTTP-Anforderung) in etwas generisch - ein Kamel Exchange
- das eine nach unten fahren kann Route . Während, wenn Sie die put Komponente am Ende einer Route , dann müssen Sie eine Implementierung eines Producer
haben. Die Hersteller macht die Arbeit des Nehmens des Austausch von dem Ende einer Route und es in etwas Bestimmten Umwandlung (wie eine JMS-Nachricht).
Ich finde die Dokumentation Fuse ESB besser zu sein (im Allgemeinen) als die Apache Camel Website . Von Fuse ESB-Komponente Seite :
Verbraucher Endpunkte verbrauchen Anfragen. Sie erscheinen immer am Anfang eine Route und sie kapseln den Code für den Empfang eingehende Anfragen und ausgehende Antworten Dispatching.
Producer Endpunkte Produkte Anfragen. Sie erscheint immer am Ende eine Route und sie kapseln den Code verantwortlich für Dispatching ausgehende Anfragen und eingehende Antworten zu empfangen.
A Producer erstreckt Prozessor, der bedeutet, dass es einen Prozess Verfahren außerdem hat.
überprüfen Sie die freien Kapitel 1 in dem Camel in Aktion Buch, das ein wenig über diese Camel Konzepte erzählt. http://www.manning.com/ibsen/
Und das Tutorial ist auch ausgezeichnet, da sie diese Konzepte in einem gleichmäßigen Tempo führen http://camel.apache.org/tutorial-example-reportincident.html