2012-02-23 15 views
7

En una ruta Camel, ¿debería pensar en poner mi lógica empresarial en un extremo alojado discretamente alojado, como un bean controlado por mensajes o un servicio web, frente a implementarlo solo en procesadores Camel? ?Lógica empresarial en procesadores Camel vs puntos finales de servicio

Parece una separación más clara de las preocupaciones para usar Camel solo para la mediación & orquestación, usando Procesadores como filtros, en lugar de como un contenedor para la lógica de negocios. Sin embargo, no preveo la necesidad de un contenedor EJB en este momento, y parece que necesitaría uno para alojar MDB.

Arquitectura más limpia frente a una huella más pequeña, menos tecnologías - ¿Alguien tiene pensamientos, perspectivas o sentimientos fuertes al respecto?

Respuesta

11

Yo generalmente uso camello para realizar el siguiente ...

  • cualquier component integración (archivo, JMS, HTTP, etc.)
  • para implementar la lógica EIP (basado enrutamiento de contenido, filtros, estrangulación, etc. .)
  • procesos basados ​​en temporizador (utilizando timer o quartz) manipulación
  • excepción (la lógica de reintento, el registro de errores/notificación/cola)

De lo contrario, para la lógica de negocio que es independiente (especialmente la integración heredada), puede ser preferible utilizar POJO o WebServices. Esto promueve la capacidad de prueba y hace que su aplicación más modular, etc A continuación, puede utilizar camello por el siguiente ...

  • para interactuar con estos servicios utilizando Processors, Bean Binding y CXF
  • cablear estos servicios juntos en
  • rutas
  • gestionar/monitor de flujo de mensajes, gestión de excepciones

En lo que respecta a los procesos de ejecución larga, puede facilitar este camello a través de varios patrones asycnhronous/tecno logies (JMS, CXF, consumidores de sondeo, trabajos programados, etc.) y le da control sobre threading ...

Dicho todo esto, hay muchas maneras de cortarlo. Camel es liviano, flexible y está diseñado para facilitar la integración con las tecnologías existentes, no para reemplazarlas ... buena suerte

+0

Gracias @boday! Mi pregunta principal debería haber sido "¿Dónde puedo poner claramente la lógica empresarial sin arrastrarme por un contenedor EJB?" - No sabía acerca de los pojos controlados por mensajes y el enlace de beans. :-) –

+0

genial ... sí, POJOs/Frijoles es donde debe ir toda la lógica del negocio personalizado ... funciona muy bien si quieres dejar Camel fuera de la ecuación para probar, etc ... –

0

Debería tratar de separar aspectos técnicos como el enrutamiento o el filtrado de su lógica comercial.

Así que la parte más importante es no mezclar estos en la misma clase. Separarlos en unidades de despliegue discretas puede tener sentido pero es menos importante.

Camel se puede utilizar muy bien para implementar "beans controlados por mensajes". Simplemente defina sus estructuras de datos usando anotaciones pojos + JAXB o genere desde XSD. Luego puede usar la mensajería camel pojo para conectarlos a http, jms o incluso a puntos finales de archivo.

Ver http://www.liquid-reality.de/x/NoBe

Cuando se ejecuta en OSGi es una elección obvia para ofrecer sus servicios como servicios OSGi.Camel se puede usar en un paquete separado para conectar estos servicios a los transportes. De esta forma puede hacer que sus servicios sean completamente simples Java.

También puede usar CXF para ofrecer sus servicios como servicios SOAP o recursos de descanso. Yo prefiero XML sobre JMS con camello, ya que es más liviano y tiene algunas buenas ventajas con respecto a la alta disponibilidad y el equilibrio de carga gracias a jms.

Cuestiones relacionadas