2012-06-18 16 views
7

Su un ESB come Apache Camel, quale meccanismo è in realtà "in marcia" (spingendo/spingendo) i messaggi lungo i percorsi dall'endpoint all'endpoint?Apache Camel: che cosa marcia i messaggi?

fa il cammello RouteBuilder solo comporre un grafico della Endpoints e Routes e sapere quale destinazione/successiva Endpoint per passare un messaggio a dopo la visita un certo Endpoint o fare il Endpoints stessi sanno che è la prossima destinazione per il messaggio che ha trasformati.

In entrambi i casi, sono confuso:

  • se è il RouteBuilder che conosce il "flusso" di messaggi attraverso il sistema, allora questo RouteBuilder avrebbe bisogno di conoscere la logica di business di quando a Endpoint A dovrebbe passare il messaggio accanto a Endpoint B vs Endpoint C, ma in tutti gli esempi Camel vedo che questa logica aziendale non esiste; e
  • Sembra essere che mettere quel tipo di logica di business "flusso" nelle Endpoints stesse coppie insieme e sconfigge alcuni dei principi di base della SOA/ESB/EIP, ecc

risposta

8

Sotto il cofano I credi che cammello stia costruendo un puro grafo in cui ogni nodo è un endpoint/processore Camel, e ogni spigolo è una rotta tra due endpoint (un'origine e una destinazione). Questo grafico è esattamente ciò che RouteBuilder sta creando quando invochi la sua API. Quando vai a start() un percorso Camel, il grafico è molto probabilmente convalidato e tradotto in una serie di Runnable s che devono essere eseguiti, e probabilmente usa un qualche tipo di custom Executor o gestione dei thread per gestire questi Runnable s.

Pertanto, l'esecuzione di Runnable s (processori che elaborano i messaggi man mano che arrivano) viene gestita da questa personalizzata Executor. Questo è il meccanismo che "marcia i messaggi lungo", sebbene l'ordine in cui le attività vengono accodate sia guidato dalla struttura globale del grafico composta da RouteBuilder.

7

consiglio di leggi prima questo QA What exactly is Apache Camel? ... e i collegamenti a cui fa riferimento, su qualche altro background su Apache Camel.

La logica aziendale può essere qualsiasi tipo di logica, ad esempio un bean Java (POJO). E Camel ti consente di accedere alla tua logica di business in un modo accoppiato losco. Si veda ad esempio questi collegamenti