Apache Camel - Projet

Nous utiliserons Maven pour construire un projet Camel. Cependant, nous préférons utiliser IntelliJ IDE pour le développement. Vous pouvez utiliser n'importe quel IDE de votre choix pour ce projet.

Créer un nouveau projet

Créer un nouveau Maven projet et précisez ce qui suit -

GroupId: Basket
ArtifactId: Basket

Sélectionnez l'emplacement par défaut de votre projet ou, si vous préférez, spécifiez le répertoire de votre choix.

Ajouter des dépendances

Vous devez ajouter quelques dépendances pour utiliser Camel. Les dépendances sont ajoutées danspom.xml. Alors ouvrez pom.xml et ajoutez les deux dépendances suivantes -

<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- Nous avons besoin du strict minimum de dépendances pour notre application. Au fur et à mesure que vous utiliserez plus de composants Camel de ses bibliothèques, vous devrez ajouter les dépendances correspondantes dans ce fichier pom.xml.

Création de Java DSL

Ensuite, vous écrirez votre code de filtrage et de routage dans un Java DSL. Créez une nouvelle classe Java appeléeDistributeOrderDSL. Ajoutez-y le code suivant -

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();
      }
   }
}

dans le main méthode, nous créons d'abord CamelContext en instanciant une implémentation par défaut fournie dans DefaultCamelContext classe.

CamelContext context = new DefaultCamelContext();

Ensuite, nous ajoutons une route en créant un RouteBuilder instance -

context.addRoutes(new RouteBuilder() {

Nous remplaçons le configure méthode pour ajouter une route à partir d'un URI direct DistributeOrderDSLà la console système. Nous fournissons un filtrage en utilisant la requête xpath.

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

Après avoir ajouté la route, nous commençons le contexte -

context.start();

Ensuite, nous ajoutons le code pour créer notre URI direct - DistributeOrderDSL.

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

Enfin, nous commençons le traitement -

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

Maintenant que votre code Java DSL est terminé, la seule chose qui reste avant de tester l'application est d'ajouter le order.xmlfichier à votre projet. Vous pouvez utiliser l'exemple XML présenté dans le chapitre Introduction à cette fin.

Résultats de test

Lorsque vous exécutez l'application, vous verrez la sortie suivante -

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

Notez que seules les commandes de savons sont répertoriées ici. Si vous souhaitez stocker ceci dans un fichier local, commentez simplement lestream.out et décommentez la ligne suivante dans votre configure méthode -

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

Dans notre section suivante, nous apprendrons à utiliser Camel avec Spring.