2012-06-18 32 views
7

Auf einem ESB wie Apache Camel, welcher Mechanismus ist eigentlich "marschieren" (ziehen/schieben) Nachrichten entlang der Routen vom Endpunkt zum Endpunkt?Apache Camel: Was marschiert Nachrichten?

Hat das Kamel RouteBuilder komponieren nur eine grafische Darstellung des Endpoints und Routes und wissen, welches Ziel/nächste Endpoint eine Nachricht an passieren, nachdem sie ein bestimmtes Endpoint besucht oder tun die Endpoints selbst wissen, welches das nächste Ziel für die Nachricht ist es hat verarbeitet.

So oder so, ich bin verwirrt:

  • Wenn es die RouteBuilder ist, der den „Flow“ von Nachrichten durch das System kennt, dann ist dies RouteBuilder müßten die Geschäftslogik von wann bis Endpoint A wissen sollte Übergeben Sie die Nachricht neben Endpoint B vs Endpoint C, aber in allen Camel-Beispielen sehe ich diese Geschäftslogik nicht existiert; und
  • Es scheint zu sein, dass diese Art von „Flow“ Business-Logik setzen in den Endpoints sich Paare sie zusammen und besiegt einige der grundlegenden Prinzipien der SOA/ESB/EIP usw.

Antwort

8

Unter der Haube I glaube, camel konstruiert ein reines Diagramm, wobei jeder Knoten ein Camel-Endpunkt/Prozessor ist und jede Kante eine Route zwischen zwei Endpunkten (einer Quelle und einem Ziel) ist. Dieses Diagramm ist genau das, was RouteBuilder erstellt, wenn Sie seine API aufrufen. Wenn Sie eine Camel-Route zu start() gehen, wird das Diagramm höchstwahrscheinlich validiert und in eine Reihe von Runnable s übersetzt, die ausgeführt werden müssen, und verwendet wahrscheinlich eine Art benutzerdefinierte Executor oder Thread-Verwaltung, um diese Runnable s zu behandeln.

So wird die Ausführung der Runnable s (Prozessoren Verarbeitung von Nachrichten, wie sie ankommen) von diesem benutzerdefinierten Executor behandelt. Dies ist der Mechanismus, der "Nachrichten entlang marschiert", obwohl die Reihenfolge, in der die Aufgaben in die Warteschlange gestellt werden, durch die übergeordnete Struktur des Graphen gesteuert wird, der durch RouteBuilder zusammengesetzt wird.

7

Ich schlage Lesen Sie diese QA zuerst What exactly is Apache Camel? ... und die Links, auf die es sich bezieht, auf etwas mehr Hintergrund über Apache Camel.

Die Geschäftslogik kann jede Art von Logik sein, z. B. eine Java-Bean (POJO). Und mit Camel können Sie losgelöst auf Ihre Geschäftslogik zugreifen. Siehe zum Beispiel diese Links