JBoss Fuse - Apache Camel

Dans ce chapitre, nous aborderons ce qu'est Apache Camel et comment il achemine efficacement les données entre les points de terminaison, avec quelques exemples.

Qu'est-ce qu'Apache Camel?

Apache Camel est un framework d'intégration open source qui a été lancé début 2007.

Il s'agit d'une approche basée sur EIP (Enterprise Integration Pattern) qui fournit plusieurs implémentations de modèles prêts à l'emploi qui peuvent être utilisées pour résoudre les problèmes d'intégration d'entreprise. Les EIP ne sont rien d'autre que des solutions éprouvées aux problèmes bien documentés et récurrents de l'intégration d'entreprise.

Camel est également connu sous le nom de moteur de routage et de médiation car il achemine efficacement les données entre les points de terminaison, tout en prenant une charge lourde comme la transformation des formats de données, la connectivité des points de terminaison et bien d'autres.

Exemple de base

Les prérequis pour utiliser Apache Camel sont:

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

Créer le squelette de base de l'application

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

Cela devrait générer la structure de répertoires suivante.

Ceci est un squelette de base de notre application Camel en cours de génération.

Modifier camel-context.xml

Éditer camel-first-app → src → main → resources → META-INF\spring\camel-context.xml pour correspondre comme ci-dessous

<?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>

Modifier pom.xml

Ajoutez le code suivant dans <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>

Changer le type d'emballage de jar → bundle.

<packaging>bundle</packaging>

Générez le projet à l'aide de la commande suivante -

mvn clean install

Installer le projet dans Fuse

Démarrer Fuse en utilisant Fuse.bat/start.bat. Si vous démarrez Fuse en utilisantstart.bat, utilisation client.batpour se connecter à Fuse. Vous devriez obtenir l'interface utilisateur comme indiqué dans la capture d'écran suivante.

Il s'agit de la CLI pour accéder aux commandes Karaf et Fuse.

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

Testez si votre projet est en cours d'exécution

Maintenant, votre application doit être installée dans Fuse. Copier le répertoire de données à l'intérieurcamel-first-app et placez-le dans D:/src/ et il devrait copier le message ayant city = London dans D:/target/merssages/uk.

Placez le fichier d'entrée dans 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: / cible / messages / autres

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