Pregunta ¿Qué es exactamente Apache Camel?


No entiendo exactamente qué Camello hace.

Si pudieras dar en 101 palabras una introducción a Camel:

  • ¿Qué es exactamente?
  • ¿Cómo interactúa con una aplicación escrita en Java?
  • ¿Es algo que va junto con el servidor?
  • Es un programa independiente?

Por favor explica qué es Camel.


1137
2018-01-13 02:32


origen


Respuestas:


Si tiene de 5 a 10 minutos, generalmente recomiendo a la gente que lea esto Integración con Apache Camel por Jonathan Anstey. Es una pieza bien escrita que brinda una breve introducción y una visión general de algunos de los conceptos de Camel, e implementa un caso de uso con ejemplos de código. En él, Jonathan escribe:

Apache Camel es un framework Java de código abierto que se enfoca en hacer que la integración sea más fácil y más accesible para los desarrolladores. Lo hace al proporcionar:

  • implementaciones concretas de todos los ampliamente utilizados Patrones de integración empresarial (EIP)
  • conectividad a una gran variedad de transportes y API
  • Lenguajes específicos de dominio (DSL) fáciles de usar para conectar EIPs y transportes juntos

También hay un capítulo libre de Camello en acción que introduce a Camel en el primer capítulo. Jonathan es coautor de ese libro conmigo.


596
2018-01-13 10:49



Mi opinión para describir esto de una manera más accesible ...

Para entender qué es Apache Camel, debe comprender qué son los Patrones de Integración Empresarial.

Comencemos con lo que presumiblemente ya sabemos: el patrón Singleton, el patrón Factory, etc. Son simplemente formas de organizar su solución al problema, pero no son soluciones en sí mismas. Estos patrones fueron analizados y extraídos para el resto de nosotros por The Gang of Four, cuando publicaron su libro: Patrones de diseño. Nos ahorraron a algunos de nosotros un tremendo esfuerzo al pensar cómo estructurar mejor nuestro código.

Al igual que la Banda de los Cuatro, Gregor Hohpe y Bobby Woolf fueron los autores del libro Patrones de integración empresarial (EIP) en el que proponen y documentan un conjunto de nuevos patrones y planos por cómo pudimos mejor diseñe sistemas grandes basados ​​en componentes, donde los componentes se pueden ejecutar en el mismo proceso o en una máquina diferente.

Básicamente proponen que estructuramos nuestro sistema para que sea mensaje orientado - donde los componentes se comunican entre sí usando mensajes como entradas y salidas y absolutamente nada más. Nos muestran un conjunto completo de patrones que podemos elegir e implementar en nuestros diferentes componentes que juntos formarán el sistema completo.

Entonces, ¿qué es Apache Camel?

Apache Camel le ofrece las interfaces para los EIP, los objetos básicos, las implementaciones comúnmente necesarias, las herramientas de depuración, un sistema de configuración y muchos otros ayudantes que le ahorrarán un montón de tiempo cuando desee implementar su solución para seguir los EIP.

Toma MVC. MVC es bastante simple en teoría y podríamos implementarlo sin ninguna ayuda marco. Pero los buenos frameworks de MVC nos proporcionan la estructura lista para usar y han hecho un esfuerzo adicional y han pensado en todas las demás cosas "secundarias" que necesita cuando crea un gran proyecto de MVC y es por eso que las usamos la mayor parte del tiempo.

Eso es exactamente lo que Apache Camel es para los EIP. Es un marco completo listo para producción para las personas que desean implementar su solución para seguir los EIP.


929
2017-07-18 11:38



Creando un Descripción del Proyecto no debería ser complicado.

Yo digo:

Apache Camel es un pegamento de tecnología de mensajería con enrutamiento. Une los puntos de inicio y fin de los mensajes que permiten la transferencia de mensajes de diferentes fuentes a diferentes destinos. Por ejemplo: JMS -> JSON, HTTP -> JMS o embudo FTP -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia dice:

Apache Camel es un motor de enrutamiento y mediación basado en reglas que proporciona una implementación basada en objetos Java de Patrones de Integración Empresarial utilizando una API (o Lenguaje Específico Específico de Dominio de Java) para configurar reglas de enrutamiento y mediación. El lenguaje específico del dominio significa que Apache Camel puede admitir la finalización inteligente segura de tipos de las reglas de enrutamiento en su IDE utilizando código Java normal sin grandes cantidades de archivos de configuración XML; aunque la configuración XML dentro de Spring también es compatible.

¿Ver? Eso no fue difícil, ¿verdad?


636
2018-05-31 15:37



En breve:

Cuando exista un requisito para conectar / integrar sistemas, es probable que deba conectarse a alguna fuente de datos y luego procesar estos datos para que coincidan con los requisitos de su negocio.

Para hacer eso:

1) Puede desarrollar un programa personalizado que lo haga (puede llevar mucho tiempo y ser difícil de entender, mantener para otro desarrollador)

2) Alternativamente, podría usar Apache Camel para hacerlo de manera estandarizada (tiene la mayoría de los conectores ya desarrollados para usted, solo necesita configurarlos y conectar su lógica, llamada Proceso):

Camel te ayudará a:

  1. Consumir datos de cualquier fuente / formato
  2. Procesar esta información
  3. Salida de datos a cualquier fuente / formato

Al utilizar Apache Camel, le resultará fácil comprender / mantener / extender su sistema a otro desarrollador.

Apache Camel está desarrollado con Enterprise Integration Patterns. Los patrones te ayudan a integrar los sistemas de una buena manera :-)


106
2018-06-04 20:48



Un diagrama es mejor que miles de descripciones. Este diagrama ilustra la arquitectura de Camel.

enter image description here


66
2017-12-27 02:48



Camel envía mensajes de A a B:

enter image description here

¿Por qué un marco completo para esto? Bueno, y si tienes:

  • muchos remitentes y muchos receptores
  • una docena de protocolos (ftp, http, jms, etc.)
  • muchas reglas complejas
    • Enviar un mensaje A solo a los receptores A y B
    • Enviar un mensaje B al receptor C como XML, pero en parte traducir eso, enriquecer (agregar metadatos) y SI condición X, luego enviarlo también a Receiver D, pero como CSV.

Entonces ahora necesitas:

  • traducir entre protocolos
  • pegamento componentes juntos
  • definir rutas - qué pasa donde
  • filtrar algunas cosas en algunos casos

Camel te da el anterior (y más) fuera de la caja:

enter image description here

con un lenguaje DSL atractivo para que usted defina qué y cómo:

  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}

Ver también esta y esta y Camel in Action (como otros han dicho, ¡un excelente libro!)


54
2018-04-28 17:53



Una de las cosas que debe entender, antes de intentar comprender Apache Camel, son los Patrones de Integración Empresarial. No todos en el campo realmente están al tanto de ellos. Si bien puedes leer el libro de Patrones de Integración Empresarial, una forma más rápida de ponerte al día sobre ellos sería leer algo como el artículo de Wikipedia sobre Integración de aplicaciones empresariales.

Una vez que haya leído y entendido el tema, es mucho más probable que comprenda el propósito de Apache Camel

HTH


45
2018-01-13 03:36



BASADO EN ANALOGÍA

El enrutamiento basado en Camel puede entenderse fácilmente poniéndose en la piel de un propietario de una aerolínea (por ejemplo: American Airlines, Jet Airways).

El propósito de 'su aerolínea' es 'transportar' 'pasajeros' de una 'ciudad' a otra en el mundo. Utiliza aeronaves de diferentes "compañías aéreas" como Boeing, Airbus, HAL para transportar pasajeros.

Los pasajeros de las juntas de su aerolínea usan los "aeropuertos" de la ciudad y los desplazan usando el aeropuerto de la ciudad. Un pasajero puede "viajar" a varias ciudades, pero en todas partes tiene que pasar por el aeropuerto para viajar entre la aeronave de su aerolínea y la ciudad.

Tenga en cuenta que un pasajero que "sale" de la ciudad esencialmente está "llegando" a la aeronave de su aerolínea. Y un pasajero que "llega" a la ciudad, esencialmente se está alejando del avión. Dado que estamos en la piel del propietario de la línea aérea, el término "pasajero de llegada" y "pasajero de salida" se revierten de nuestras nociones convencionales que se basan en la perspectiva de las ciudades.

La misma infraestructura de "aeropuerto" de cada ciudad es utilizada por los pasajeros "que parten" y los pasajeros "de llegada". Un aeropuerto proporciona 'infraestructura de salida' para los pasajeros que salen, que es diferente de la 'infraestructura de llegada' provista para los pasajeros que llegan.

Los pasajeros pueden continuar haciendo su día para sus actividades debido a varias 'comodidades' proporcionadas dentro del avión por sus aerolíneas, mientras viajan.

Además de eso, su aerolínea también ofrece instalaciones de salón para tratamientos especiales como "entender el idioma local" y / o prepararse para el "viaje".

Permite reemplazar algunas palabras / frases usadas anteriormente con las siguientes:

su aerolínea: Apache Camel

compañías aéreas: mecanismos de transporte

el avión de su aerolínea: el mecanismo de transporte subyacente de Apache Camel

llevar: ruta

pasajeros: mensaje;

ciudad: sistema;

aeropuerto: Componente Camel;

entendiendo los idiomas locales: tipo de conversiones;

partiendo: produciendo, produciendo

llegando: consumiendo, consumiendo

viaje: enrutado

comodidades: siempre

Después de reemplazar las palabras, esto es lo que obtienes:

Propósito de 'Apache Camel' es enrutar 'mensajes' de un 'sistema' a otro en el mundo. Apache camel utiliza diferentes mecanismos de transporte para el enrutamiento de mensajes.

Apache Camel recoge los mensajes usando 'Camel based Component' del sistema 'from' y los suelta usando el 'Camel based Component' del sistema 'to'. Un mensaje puede encaminarse a múltiples sistemas, pero en todas partes tienen que pasar por 'Componentes basados ​​en Camel' para viajar entre el 'mecanismo de transporte subyacente de Apache Camel' y el sistema.

Tenga en cuenta que un mensaje 'producido' desde el sistema es esencialmente 'consumido' en el mecanismo de transporte subyacente de Apache Camel '. Y un mensaje consumido por un sistema, es esencialmente producido por el 'mecanismo de transporte subyacente de Apache Camel'.

Como intentamos entender a Camel, debemos pensar desde la perspectiva de Camel aquí en adelante. El significado de los términos 'mensaje del consumidor' y 'mensaje del productor' se revierte de nuestras nociones convencionales que se basan en la perspectiva de un sistema.

La misma infraestructura de codificación de 'Componentes basados ​​en Camel' es utilizada por 'mensaje de productor' y 'mensaje de consumidor'. Un 'Componente basado en Camel' proporciona un 'punto final productor' para 'mensaje productor' y 'punto final consumidor' para 'mensaje consumidor'.

Los mensajes pueden ser procesados ​​por Camel cuando se enrutan.

Además de esta ruta, Camel ofrece características especiales como 'Conversión de tipo' y muchas más ...


41
2018-04-13 12:54