Apache Camel - Projekt

Wir werden Maven verwenden, um ein Kamelprojekt zu bauen. Wir verwenden jedoch vorzugsweise IntelliJ IDE für die Entwicklung. Sie können für dieses Projekt eine beliebige IDE Ihrer Wahl verwenden.

Neues Projekt erstellen

Erstelle eine neue Maven Projekt und geben Sie Folgendes an -

GroupId: Basket
ArtifactId: Basket

Wählen Sie den Standardspeicherort für Ihr Projekt oder geben Sie bei Bedarf das Verzeichnis Ihrer Wahl an.

Abhängigkeiten hinzufügen

Sie müssen einige Abhängigkeiten hinzufügen, um Camel verwenden zu können. Die Abhängigkeiten werden hinzugefügtpom.xml. Öffnen Sie also pom.xml und fügen Sie die folgenden zwei Abhängigkeiten hinzu:

<dependencies>
   <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
      <version>2.20.0</version>
   </dependency>
   <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-stream</artifactId>
      <version>2.20.0</version>
   </dependency>
</dependencies>

Note- Wir benötigen die Mindestabhängigkeiten für unsere Anwendung. Wenn Sie mehr Camel-Komponenten aus den Bibliotheken verwenden, müssen Sie die entsprechenden Abhängigkeiten in diese Datei pom.xml einfügen.

Java DSL erstellen

Als Nächstes schreiben Sie Ihren Filter- und Routing-Code in Java DSL. Erstellen Sie eine neue Java-Klasse mit dem NamenDistributeOrderDSL. Fügen Sie den folgenden Code hinzu:

public class DistributeOrderDSL {
   public static void main(String[] args) throws Exception {
      CamelContext context = new DefaultCamelContext();
      try {
         context.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
               from("direct:DistributeOrderDSL")
                  .split(xpath("//order[@product='soaps']/items")).to("stream:out");
               
               // .to("file:src/main/resources/order/");
            }
         });
         context.start();
         ProducerTemplate orderProducerTemplate = context.createProducerTemplate();
         InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
            .getResource("order.xml").getFile());
         orderProducerTemplate.sendBody("direct:DistributeOrderDSL", orderInputStream);
      } finally {
         context.stop();
      }
   }
}

In dem main Methode erstellen wir zuerst CamelContext durch Instanziieren einer Standardimplementierung in DefaultCamelContext Klasse.

CamelContext context = new DefaultCamelContext();

Als Nächstes fügen wir eine Route hinzu, indem wir eine anonyme erstellen RouteBuilder Instanz -

context.addRoutes(new RouteBuilder() {

Wir überschreiben die configure Methode zum Hinzufügen einer Route von einem direkten URI DistributeOrderDSLan die Systemkonsole. Wir bieten einige Filter mithilfe der xpath-Abfrage.

public void configure() throws Exception {
   from("direct:DistributeOrderDSL")
      .split(xpath("//order[@product = 'soaps']/items")).to("stream:out");
   // .to("file:src/main/resources/order/");
}

Nach dem Hinzufügen der Route starten wir den Kontext -

context.start();

Als nächstes fügen wir den Code zum Erstellen unserer direkten URI hinzu - DistributeOrderDSL.

ProducerTemplate orderProducerTemplate = context.createProducerTemplate();
InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
   .getResource("order.xml").getFile());

Schließlich starten wir die Verarbeitung -

orderProducerTemplate.sendBody("direct:DistributeOrderDSL", orderInputStream);

Nachdem Ihr Java-DSL-Code fertiggestellt ist, müssen Sie vor dem Testen der Anwendung nur noch den Code hinzufügen order.xmlDatei zu Ihrem Projekt. Zu diesem Zweck können Sie das im Kapitel Einführung gezeigte XML-Beispiel verwenden.

Testergebnisse

Wenn Sie die Anwendung ausführen, wird die folgende Ausgabe 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>

Beachten Sie, dass hier nur Bestellungen für Seifen aufgeführt sind. Wenn Sie dies in einer lokalen Datei speichern möchten, kommentieren Sie einfach diestream.out Zeile und kommentieren Sie die folgende Zeile in Ihrem configure Methode -

// .to("file:src/main/resources/order/");

In unserem folgenden Abschnitt erfahren Sie, wie Sie Camel mit Spring verwenden.