Apache Camel - Verwenden mit Frühling
Wir werden nun die Anwendung aus dem vorherigen Kapitel mit Spring neu erstellen. Dies gibt uns eine Vorstellung davon, wie Camel-Routing in XML anstatt in DSL erstellt wird.
Neues Projekt erstellen
Erstelle eine neue Maven Projekt und geben Sie Folgendes an -
GroupId: BasketWithSpring
ArtifactId: BasketWithSpring
Wählen Sie den Standardspeicherort für Ihr Projekt oder geben Sie bei Bedarf das Verzeichnis Ihrer Wahl an.
Abhängigkeiten hinzufügen
Zusätzlich zu den Kernabhängigkeiten, die Sie in der früheren Anwendung verwendet haben, müssen Sie einige weitere Abhängigkeiten hinzufügen, um Spring zu verwenden. Die Abhängigkeiten werden in pom.xml hinzugefügt. Öffnen Sie nun pom.xml und fügen Sie die folgenden Abhängigkeiten hinzu:
<dependencies>
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.15.2</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.15.1</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>2.15.1</version>
</dependency>
</dependencies>
Erstellen von Java DSL für Spring
Lassen Sie uns nun eine neue Java-Klasse namens erstellen DistributeOrderXML. Fügen Sie den folgenden Code hinzu:
public class DistributeOrderXML {
public static void main(String[] args) throws Exception {
ApplicationContext appContext = new ClassPathXmlApplicationContext(
"SpringRouteContext.xml");
CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);
try {
camelContext.start();
ProducerTemplate orderProducerTemplate = camelContext.createProducerTemplate();
InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
.getResource("order.xml").getFile());
orderProducerTemplate.sendBody("direct:DistributeOrderXML", orderInputStream);
} finally {
camelContext.stop();
}
}
}
In dem main Methode erstellen wir zuerst eine Instanz von ApplicationContextDies ist die zentrale Schnittstelle innerhalb einer Spring-Anwendung. In seinem Konstruktor geben wir den Namen der XML-Datei an, die unsere Routing- und Filterinformationen enthält.
ApplicationContext appContext = new ClassPathXmlApplicationContext(
"SpringRouteContext.xml");
Als nächstes erstellen wir CamelContext Angabe der oben erstellten ApplicationContext in seinem Parameter.
CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);
Zu diesem Zeitpunkt ist unser Routing und Filtern eingerichtet. Deshalb starten wir dieCamelContext mit seiner startMethode. Wie im vorherigen Fall definieren wir den Endpunkt zum Laden der Datei order.xml und starten die Verarbeitung. Lassen Sie uns nun verstehen, wie Routing in XML definiert ist.
Anwendungskontext erstellen
Fügen Sie dem Projekt eine neue XML-Datei hinzu und rufen Sie sie auf SpringRouteContext.xml. Schneiden Sie den folgenden Inhalt aus und fügen Sie ihn in diese Datei ein.
<?xml version = "1.0" encoding = "UTF-8"?>
<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">
<route>
<from uri = "direct:DistributeOrderXML"/>
<log message = "Split by Distribute Order"/>
<split>
<xpath>//order[@product = 'Oil']/items</xpath>
<to uri = "file:src/main/resources/order/"/>
<to uri = "stream:out"/>
</split>
</route>
</camelContext>
</beans>
Hier definieren wir die xpath-Abfrage wie folgt. Beachten Sie, dass wir jetzt alle Bestellungen für „Öl“ auswählen.
<xpath>//order[@product = 'Oil']/items</xpath>
Die Ausgabeendpunkte sind mehrfach. Der erste Endpunkt gibt die anorder Ordner und der zweite gibt die Konsole an.
<to uri = "file:src/main/resources/order/"/>
<to uri = "stream:out"/>
Führen Sie die Anwendung aus.
Testergebnisse
Wenn Sie die Anwendung ausführen, wird die folgende Ausgabe auf dem Bildschirm angezeigt.
<items>
<item>
<Brand>Cinthol</Brand>
<Type>Original</Type>
<Quantity>4</Quantity>
<Price>25</Price>
</item>
<item>
<Brand>Cinthol</Brand>
<Type>Lime</Type>
<Quantity>6</Quantity>
<Price>30</Price>
</item>
</items>
Probier das aus orderOrdner in dem von Ihnen angegebenen Pfad. Sie finden eine neu erstellte Datei, die den obigen XML-Code enthält.
Fazit
Camel bietet ein sofort einsatzbereites Framework, das EIPs implementiert, um Ihre Integrationsprojekte zu vereinfachen. Es unterstützt die Codierung in domänenspezifischen Sprachen sowie die Verwendung von XML.