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>