Apache Camel - Descripción general
Camel es una caja negra que recibe mensajes de algún endpoint y los envía a otro. Dentro de la caja negra, los mensajes se pueden procesar o simplemente redirigir.
Entonces, ¿por qué tener un marco para esto? En situaciones prácticas, como se ve en el estudio de caso de introducción, puede haber muchos remitentes y muchos receptores, cada uno siguiendo su propio protocolo, como ftp, http y jms. El sistema puede requerir muchas reglas complejas, como que el mensaje del remitente A se envíe solo a B & C. En situaciones, es posible que deba traducir el mensaje a otro formato que el receptor espera. Esta traducción puede estar sujeta a ciertas condiciones basadas en el contenido del mensaje. Por lo tanto, es posible que deba traducir entre protocolos, unir componentes, definir reglas de enrutamiento y proporcionar filtrado según el contenido del mensaje. Esto se ilustra en la siguiente figura:
Para cumplir con los requisitos anteriores y diseñar una arquitectura de software adecuada para muchas de estas situaciones, Gregor Hohpe y Bobby Woolf documentaron los patrones de integración empresarial ( EIP ) en 2003. Apache Camel proporciona la implementación de estos patrones y el propósito de este tutorial es enseñar cómo usar Camel en situaciones como la descrita en la introducción.
Apache Camel es un marco de código abierto. Es un middleware orientado a mensajes que proporciona un motor de mediación y enrutamiento basado en reglas. Puede definir reglas como, por ejemplo, si se trata de un pedido de "leche", redirigirlo a un proveedor de leche y si es un pedido de "aceite", redirigirlo a un proveedor de aceite, etc. Con Camel, podrá implementar estas reglas y realizar el enrutamiento en un código Java familiar. Significa que puede utilizar su IDE de Java familiar para definir estas reglas en un entorno de tipo seguro. No necesitamos utilizar archivos de configuración XML, que suelen ser voluminosos. Sin embargo, Camel admite la configuración XML a través del marco Spring, si prefiere usar XML para configurar las reglas. Incluso puede usar archivos de configuración Blueprint XML e incluso un DSL de Scala, si es un amante de Scala. También significa que puede usar su Java, Scala IDE favorito o incluso un simple editor XML para configurar las reglas.
La entrada a este motor puede ser un archivo de texto delimitado por comas, un POJO (Plain Old Java Object), XML son cualquiera de los otros formatos soportados por Camel. Del mismo modo, la salida del motor se puede redirigir a un archivo, a una cola de mensajes o incluso a la pantalla de su monitor para que pueda ver los pedidos enviados a los respectivos proveedores. Estos se denominan puntos finales y Camel admite el patrón EIP de punto final de mensaje . Los puntos finales de Camel se describen más adelante en el capítulo Puntos finales.
Camel se utiliza normalmente con Apache ServiceMix , Apache ActiveMQ y Apache CXF para implementar arquitecturas orientadas a servicios.