Fusible JBoss - Apache Camel

En este capítulo, discutiremos qué es Apache Camel y cómo enruta efectivamente los datos entre los puntos finales, junto con algunos ejemplos.

¿Qué es Apache Camel?

Apache Camel es un marco de integración de código abierto que se inició a principios de 2007.

Es un enfoque basado en EIP (Enterprise Integration Pattern) que proporciona varias implementaciones de patrones listas para usar que se pueden utilizar para resolver problemas de integración empresarial. Los EIP no son más que soluciones comprobadas para los problemas recurrentes y bien documentados de la integración empresarial.

Camel también se conoce como motor de enrutamiento y mediación, ya que enruta datos de manera efectiva entre puntos finales, mientras soporta cargas pesadas como la transformación de formatos de datos, conectividad de puntos finales y muchos más.

Ejemplo básico

Los requisitos previos para utilizar Apache Camel son:

  • Java
  • Maven
  • Fusible Redhat JBoss 6.1-GA-379

Crear esqueleto básico de aplicación

mvn:archetype generate 
–DgroupId = com.tutorialpoint.app 
–DartifactId = camel-first-app 
–DarchetypeGroupId = org.apache.camel.archetypes
–DarchetypeArtifactId = camel-archetype-spring 
–DinteractiveMode = false -X

Esto debería generar la siguiente estructura de directorios.

Este es un esqueleto básico de nuestra aplicación Camel que se está generando.

Editar camel-context.xml

Editar camel-first-app → src → main → resources → META-INF\spring\camel-context.xml para que coincida con la siguiente

<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://camel.apache.org/schema/spring
   http://camel.apache.org/schema/spring/camel-spring.xsd">

   <camelContext xmlns = "http://camel.apache.org/schema/spring">
      <!-- here is a sample which processes the input file
         (leaving them in place - see the 'noop' flag) 
         then performs content based routing on the message using XPath -->
			
      <route>
         <from uri = "file:///d:/src/data?noop=false"/>
         <choice>
            <when>
               <xpath>/person/city = 'London'</xpath>
               <log message = "UK message"/>
               <to uri = "file:///d:/target/messages/uk"/>
            </when>
				
            <otherwise>
               <log message = "Other message"/>
               <to uri = "file:///d:/target/messages/others"/>
            </otherwise>
				
         </choice>
			
      </route>
   </camelContext>
</beans>

Editar pom.xml

Agregue el siguiente código dentro de <plugins> </plugins>

<plugin>
   <groupId>org.apache.felix</groupId>
   <artifactId>maven-bundle-plugin</artifactId>
   <version>2.3.4</version>
   <extensions>true</extensions>
	
   <configuration>
      <instructions>
         <Bundle-SymbolicName>
            ${project.artifactId}
         </Bundle-SymbolicName>
         <Import-Package>*</Import-Package>
      </instructions>
   </configuration>
	
</plugin>

Cambiar el tipo de embalaje de jar → bundle.

<packaging>bundle</packaging>

Construya el proyecto usando el siguiente comando:

mvn clean install

Instalar proyecto en Fuse

Inicie Fuse usando Fuse.bat/start.bat. Si comienza a usar Fusestart.bat, utilizar client.batpara conectarse a Fuse. Debería obtener la interfaz de usuario como se muestra en la siguiente captura de pantalla.

Esta es la CLI para acceder a los comandos Karaf y Fuse.

install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT

Pruebe si su proyecto se está ejecutando

Ahora su aplicación debería estar instalada en Fuse. Copie el directorio de datos dentrocamel-first-app y colocarlo en D:/src/ y debería copiar el mensaje que tiene city = London en D:/target/merssages/uk.

Coloque el archivo de entrada en D:/src/data

Input

Message1.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
   <firstName>James</firstName>
   <lastName>Strachan</lastName>
   <city>London</city>
</person>

Message2.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
   <firstName>Hiram</firstName>
   <lastName>Chirino</lastName>
   <city>Tampa</city>
</person>

Output

En D: / target / messages / uk

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
   <firstName>James</firstName>
   <lastName>Strachan</lastName>
   <city>London</city>
</person>

En D: / target / messages / otros

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
   <firstName>Hiram</firstName>
   <lastName>Chirino</lastName>
   <city>Tampa</city>
</person>