JBoss Fuse - Apache Camel

In diesem Kapitel werden wir anhand einiger Beispiele erläutern, was Apache Camel ist und wie Daten effektiv zwischen Endpunkten weitergeleitet werden.

Was ist Apache Camel?

Apache Camel ist ein Open Source-Integrationsframework, das Anfang 2007 gestartet wurde.

Es handelt sich um einen EIP-basierten Ansatz (Enterprise Integration Pattern), der mehrere sofort einsatzbereite Musterimplementierungen bietet, mit denen Probleme bei der Unternehmensintegration gelöst werden können. EIP sind nichts anderes als bewährte Lösungen für die gut dokumentierten und wiederkehrenden Probleme bei der Unternehmensintegration.

Camel wird auch als Routing- und Mediations-Engine bezeichnet, da es Daten effektiv zwischen Endpunkten weiterleitet und gleichzeitig eine hohe Belastung wie die Transformation von Datenformaten, Endpunktkonnektivität und vieles mehr erfordert.

Grundlegendes Beispiel

Die Voraussetzungen für die Verwendung von Apache Camel sind:

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

Erstellen Sie das Grundgerüst der Anwendung

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

Dies sollte die folgende Verzeichnisstruktur erzeugen.

Dies ist ein Grundgerüst unserer generierten Camel-Anwendung.

Bearbeiten Sie camel-context.xml

Bearbeiten camel-first-app → src → main → resources → META-INF\spring\camel-context.xml wie unten übereinstimmen

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

Bearbeiten Sie pom.xml

Fügen Sie den folgenden Code in <plugins> </ plugins> ein

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

Verpackungsart ändern von jar → bundle.

<packaging>bundle</packaging>

Erstellen Sie das Projekt mit dem folgenden Befehl:

mvn clean install

Installieren Sie das Projekt in der Sicherung

Starten Sie die Sicherung mit Fuse.bat/start.bat. Wenn Sie Fuse mit startenstart.bat, verwenden client.batan die Sicherung anschließen. Sie sollten die Benutzeroberfläche wie im folgenden Screenshot gezeigt erhalten.

Dies ist die CLI für den Zugriff auf Karaf- und Fuse-Befehle.

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

Testen Sie, ob Ihr Projekt ausgeführt wird

Jetzt sollte Ihre Anwendung in Fuse installiert sein. Kopieren Sie das Datenverzeichnis nach innencamel-first-app und legen Sie es in D:/src/ und es sollte eine Nachricht mit city = London kopieren D:/target/merssages/uk.

Platzieren Sie die Eingabedatei in 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

In D: / target / messages / uk

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

In D: / target / messages / Others

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