2012-06-18 12 views
7

En un ESB como Apache Camel, ¿qué mecanismo es realmente "marchar" (tirar/empujar) los mensajes a lo largo de las rutas desde el punto final al punto final?Apache Camel: ¿Qué marcha con los mensajes?

¿El camello RouteBuilder acaba de componer un gráfico de Endpoints y Routes y saber qué destino/siguiente Endpoint para pasar un mensaje a después de que se visita un determinado Endpoint o hacer la Endpoints mismos saben que es el próximo destino para el mensaje que tiene procesada.

De cualquier manera, estoy confundido:

  • si es el RouteBuilder sabe que el "flujo" de los mensajes a través del sistema, entonces este RouteBuilder tendría que conocer la lógica del negocio de cuándo debe Endpoint A pase el mensaje al lado de Endpoint B contra Endpoint C, pero en todos los ejemplos de Camel veo que esta lógica comercial no existe; y
  • Parece ser que poner ese tipo de "flujo" lógica de negocio en los mismos Endpoints las mantiene juntas y derrota a algunos de los principios básicos de la SOA/ESB/EIP, etc

Respuesta

8

Bajo el capó I creen camello está construyendo un gráfico puro donde cada nodo es un punto final/procesador Camel, y cada borde es una ruta entre dos puntos finales (una fuente y un destino). Este gráfico es exactamente lo que se está construyendo RouteBuilder al invocar su API. Cuando vas a una ruta start() camello, la gráfica es más probable validado y se tradujo en una serie de Runnable s que deben ser ejecutados, y probablemente utiliza algún tipo de encargo Executor o manejo de hilos para manejar estas Runnable s.

Por lo tanto, la ejecución del Runnable s (procesadores que procesan los mensajes a medida que llegan) se maneja con este Executor personalizado. Este es el mecanismo que "marchas de mensajes a lo largo", aunque el orden en que las tareas se ponen en cola es impulsado por la estructura general de la gráfica compuesta por RouteBuilder.

7

Sugiero lea este control de calidad primero What exactly is Apache Camel? ... y los enlaces a los que se refiere, en más antecedentes sobre Apache Camel.

La lógica de negocio puede ser cualquier tipo de lógica, como un bean Java (POJO). Y Camel le permite acceder a su lógica de negocios de una manera similar. Véase, por ejemplo, estos enlaces

Cuestiones relacionadas