Arquitectura y Conceptos de Apache Camel

Apache Camel es un framework de integración de código abierto que facilita la conexión de sistemas y el intercambio de datos entre ellos utilizando un modelo basado en rutas.

En esta sección, le presentaremos algunos conceptos fundamentales para entender la lógica de las integraciones.

Para una comprensión profunda y completa, consulte la documentación oficial de Apache Camel. Ella ofrece una visión detallada de los recursos, patrones y mejores prácticas.

Arquitectura

El diagrama a continuación muestra una visión general de los conceptos principales que componen la arquitectura de Camel.

camel architecture
  • El contexto Camel actúa como el centro que gestiona la integración de sistemas.

  • Dentro del contexto Camel, el mecanismo de enrutamiento utiliza una DSL (Lenguaje Específico de Dominio) para definir y crear las rutas.

  • Las rutas conectan endpoints, que son puntos de entrada y salida para sistemas externos, utilizando diferentes componentes.

  • Los componentes proporcionan conectividad y abstracción para diversos protocolos y tecnologías, como archivos, HTTP, JMS, entre otros.

  • Los mensajes recorren estas rutas y son procesados por procesadores, que transforman y manipulan los datos según sea necesario. Ellos realizan funciones como filtrado de mensajes, EIPs, enrutamiento, transformación, mediación, enriquecimiento, validación e interceptación.

Conceptos

Contexto Camel

El contexto Camel es el núcleo central de la aplicación Camel. Él es responsable de gestionar el ciclo de vida de las rutas, componentes y otros recursos.

camel context

Lenguaje Específico de Dominio (DSL)

Una DSL, del inglés Domain-Specific Language, es un lenguaje diseñado para un dominio específico que permite a los usuarios definir y configurar rutas e integraciones.

Camel soporta DSLs en varios lenguajes, como Java, Groovy, YAML, XML, entre otros. En Sensedia Integrations, utilizamos el YAML DSL para la construcción de rutas.

Ruta

Una ruta define el camino que sigue un mensaje dentro del sistema de integración, mostrando las etapas de procesamiento aplicadas al mensaje mientras viaja de una fuente a un destino.

Generalmente, una ruta consiste en una serie de etapas conectadas en una secuencia lineal, detallando cómo el mensaje será manipulado, enrutado o mediado.

Las rutas se describen usando una sintaxis simple y declarativa que facilita la lectura y comprensión.

Vea a continuación un ejemplo de una ruta Camel en formato de código y de diagrama:

- from:
    id: from-4032
    uri: rest:post:/logs
    steps:
      - log:
          message: {{beforePost}}
      - toD:
          uri: http://{{supermock}}
          parameters:
            bridgeEndpoint: true
            httpMethod: POST
      - log:
          message: "afterPost"

route diagram example

  • La ruta comienza con un gatillo del tipo REST que recibe solicitudes POST en el endpoint /logs.

  • Luego, la ruta registra en los logs un mensaje con el valor {{beforePost}}.

  • A continuación, envía una solicitud POST al endpoint http://{{supermock}}, con los parámetros:

    • bridgeEndpoint: true y

    • httpMethod: POST.

  • Finalmente, registra en los logs el mensaje "afterPost".

Consulte ejemplos de rutas en la página Tutoriales y Ejemplos.

Mensaje

Un mensaje es la unidad mínima de datos que se propaga y modifica a lo largo de una ruta. Está formado por dos componentes principales:

  • Encabezado (header): metadatos asociados al mensaje. Los encabezados pueden incluir información como identificadores, tipos de datos o cualquier otra información relevante para el procesamiento del mensaje.

  • Cuerpo (body): puede ser cualquier objeto Java. Típicamente es una cadena de caracteres (string), pero puede ser transformado en objetos más complejos según la codificación de la integración o los componentes involucrados.

message

Exchange

Exchange es un objeto que encapsula el mensaje y algunos metadatos durante el intercambio de información entre sistemas. Además, proporciona métodos utilitarios para su uso en las integraciones, como la habilidad de guardar y recuperar propiedades.

Endpoints

Endpoints son componentes que representan un punto de conexión donde los datos pueden ser enviados o recibidos dentro de un flujo de integración. Definen cómo se accede y se manipulan los datos en un sistema.

Los endpoints se referencian en la DSL a través de sus URIs.

Componentes

Componentes son artefactos usados en la construcción de una ruta que permiten la integración y la comunicación entre diferentes sistemas y protocolos. Actúan como puntos de conexión entre Camel y las diversas tecnologías o servicios externos que desea integrar en las rutas, como por ejemplo:

  • HTTP: realiza una llamada a un endpoint HTTP;

  • FTP: obtiene o envía archivos a un servidor FTP;

  • Quartz: genera eventos según un cronograma.

Patrones de Integración Empresarial (EIPs)

EIPs, del inglés Enterprise Integration Patterns, son patrones de integración que describen soluciones comunes para problemas frecuentes encontrados en sistemas de integración y comunicación entre aplicaciones.

Ayudan a estructurar y optimizar la comunicación entre aplicaciones al proporcionar métodos para el enrutamiento de mensajes, la transformación de datos, la agregación y división de mensajes, el filtrado de mensajes y el manejo de errores. Ejemplos:

  • Split: divide un mensaje en varias partes para procesamiento individual.

  • Choice: selecciona una ruta específica basada en condiciones o criterios.

  • On Exception: define cómo manejar excepciones y errores durante el procesamiento del mensaje.

Como componentes de lógica, los EIPs pueden compararse con las herramientas generales (general tools) utilizadas en las integraciones tipo Diagram.

Lenguajes de Expresión

Un lenguaje de expresión es una forma de escribir instrucciones en EIPs que ayudan a procesar y manipular datos mientras pasan por una ruta de integración.

Imagine que está moviendo datos de un lugar a otro y necesita hacer algo con esos datos, como extraer información, modificar el contenido o decidir a dónde enviarlos. El lenguaje de expresión le permite escribir esas instrucciones de manera que Camel pueda entender y aplicar durante el flujo de datos.

Por ejemplo, la condición para un Choice puede ser escrita utilizando lenguajes como Groovy, JSONPath, JQ, etc.

Formatos de Datos

Formatos de datos o data formats son artefactos referenciados por los EIPs de transformación de datos para determinar el formato de entrada o salida de los datos. Facilitan la conversión de datos entre formatos como XML, JSON, CSV y otros.

Para más información sobre formatos de datos, consulte:

  • Antes de codificar, dibuje su flujo de integración.

  • Defina las etapas necesarias para la ejecución conforme a las reglas de negocio.

  • Mapee estas etapas a los componentes y/o EIPs necesarios.

  • ¡Sólo entonces codifique!

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]