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>