Apache Camel

Apache Camel

Introducción

En este artículo se tiene como objetivo mostrar algunas de las características y componentes de Apache Camel, como parte de la suite de integración Jboss Fuse. Además de una pequeña demostración de creación de una ruta de integración.

Apache Camel

Apache Camel es un framework Java de integración, un motor de enrutamiento y mediación basado en reglas. Proporciona implementaciones de los Patrones de Integración Empresarial (EIP por sus siglas en inglés), conectividad a una gran cantidad de transportes, APIs y Lenguajes Específicos de Dominio (DSL).

Características

Apache Camel utiliza URIs para trabajar directamente con cualquier tipo de Transporte o modelo de mensajería tales como HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF. Apache Camel es una librería pequeña con mínimas dependencias para embeber fácilmente en cualquier aplicación Java. Además, provee soporte para diversos frameworks como CDI, Spring, Blueprint, y pruebas unitarias.

El núcleo de Camel, es un motor de ruteo. Este motor permite definir reglas de ruteo propias, decidir fuentes de las cuales aceptar mensajes, y determinar cómo procesar y enviar estos mensajes a otros destinos.

Camel usa un lenguaje de integración que permite definir reglas complejas. Uno de los principios fundamentales de Camel es la de no hacer asunciones sobre el tipo de datos que se procesa. Esto se vuelve importante porque proporciona al desarrollador la oportunidad de integrar cualquier tipo de sistema sin la necesidad de convertir los datos a un formato canónico.

Ejemplo de una ruta Camel

Se creará una ruta Camel que procese archivos desde una carpeta en el sistema de archivos, envíe a pantalla un mensaje y transfiera su contenido a un servidor FTP.

Para este ejemplo, estaremos usando el JBoss Developer Studio (JBDS) como entorno de desarrollo y pruebas para nuestra ruta Camel de ejemplo. Como prerrequisito tenemos un servidor de FTP local con usuario “jboss” y contraseña “jboss#1!” además del archivo XML llamado File1.xml cuyo contenido tenemos en el anexo.

  1. Entramos al JBDS y abrimos la perspectiva de Fuse Integration.

  1. Seleccionamos File -> New -> Fuse Integration Project
  1. Introducimos “Ejemplo 1” como nombre del proyecto y damos click en Next.
  1. Dejamos los valores por defecto y damos click en Finish.
  1. Abrimos el archivo blueprint.xml que se encuentra dentro de la carpeta Camel Contexts
  2. En la paleta de componentes, arrastramos un componente de tipo File y lo colocamos dentro de la ruta _route 1.

  1. Seleccionamos al componente de tipo File y en la sección de Advanced->Path cambiamos el valor de Directory Name por “InputDir”.
  2. En la sección Advanced->Consumer marcamos la opción de Delete. Con esto especificamos que una vez procesado el archivo de la carpeta, este archivo se borrará.

  1. Ahora, en la paleta de componentes seleccionamos un componente de tipo Log y lo soltamos dentro del componente de tipo File en la ruta _route1.
  2. Seleccionamos el componente _log1 y dentro de sus propiedades, en el apartado Details cambiamos el valor del campo Message por el valor

“${in.header.CamelFileName} with content -> ${body}”
donde body es el contenido del archivo que vamos a procesar.

  1. En la paleta de componentes, escogemos un componente de tipo SetHeader, este nos permitirá establecer en el mensaje que Camel procesará, el nombre del archivo que va a procesar.
  2. Seleccionamos el componente _setHeader1 y en el apartado Details cambiamos los siguientes campos
    1. Language : simple
    2. Expression : ${date:now:yyyyMMddhhmmss}-read.xml
    3. Header Name : CamelFileName

  1. Seleccionamos dentro de la paleta de componentes, un componente del tipo FTP y lo ponemos sobre el component _setHeader1.
  2. Seleccionamos el componente FTP y dentro de la pestaña Advanced->Path cambiamos los siguientes valores.
    1. Host : localhost
    2. Directory Name : /OutputDir
    3. Port : 21

Finalmente, dentro de la pestaña Advanced->Security establecemos los siguientes       valores.

  1. Username : jboss
  2. Password : jboss#1!

  1. Guardamos nuestro documento blueprint.xml.

Hasta este punto, la ruta está creada y ahora hace falta probarla en un contexto local. En ese momento, la ruta Camel estará esperando un archivo dentro del directorio /InputDir que establecimos previamente. Cuando el archivo llegue, empezará a procesarlo.     

Probando nuestra ruta Camel

  1. En el explorador de proyectos, damos click derecho al archivo blueprint.xml y damos click en la opción Run as -> Local Camel Context (without tests).
  2. Damos click al proyecto y presionamos F5 para recargar el proyecto. En este punto, veremos que se creó un directorio llamado InputDir como lo definimos en la ruta Camel.
  3. Damos click derecho en la carpeta InputDir y seleccionamos Import...
  4. Seleccionamos la opción General ->File System y damos click en Next.
  5. Nos vamos a nuestro directorio home y seleccionamos el archivo File1.xml que tenemos en el anexo y damos click a Finish.

  1. Después, veremos en la consola el contenido de nuestro archivo File1.xml y verificamos en nuestro servidor de FTP que el archivo se haya creado.

Conclusión

Como pudimos ver con Apache Camel, contamos con un framework que permitirá a los desarrolladores llevar proyectos de integración empresarial de una manera muy sencilla.

Autor: Kevin Reyes

Si deseas conocer algo más a fondo o si tienes alguna duda, puedes contactarme por correo a través de Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. o Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

 

Browse top selling WordPress Themes & Templates on ThemeForest. This list updates every week with the top selling and best WordPress Themes www.bigtheme.net/wordpress/themeforest