Apache Camel - Proje

Bir Camel projesi inşa etmek için Maven'i kullanacağız. Bununla birlikte, geliştirme için IntelliJ IDE'yi tercih ediyoruz. Bu proje için seçtiğiniz herhangi bir IDE'yi kullanabilirsiniz.

Yeni Proje Oluşturma

Yeni bir tane oluştur Maven projelendirin ve aşağıdakileri belirtin -

GroupId: Basket
ArtifactId: Basket

Projeniz için varsayılan konumu seçin veya tercih ettiğiniz dizini belirtin.

Bağımlılıklar Ekleme

Camel'i kullanmak için birkaç bağımlılık eklemeniz gerekir. Bağımlılıklar eklenirpom.xml. Bu yüzden pom.xml dosyasını açın ve aşağıdaki iki bağımlılığı ekleyin -

<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- Uygulamamız için minimum bağımlılıklara ihtiyacımız var. Kitaplıklarından daha fazla Camel bileşeni kullandıkça, bu pom.xml dosyasına karşılık gelen bağımlılıkları eklemeniz gerekecektir.

Java DSL oluşturma

Ardından, filtreleme ve yönlendirme kodunuzu bir Java DSL'de yazacaksınız. Adlı yeni bir Java sınıfı oluşturunDistributeOrderDSL. Aşağıdaki kodu ekleyin -

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

İçinde main yöntem, önce yaratırız CamelContext içinde sağlanan bir varsayılan uygulamayı örnekleyerek DefaultCamelContext sınıf.

CamelContext context = new DefaultCamelContext();

Ardından, anonim bir yol oluşturarak bir rota ekliyoruz. RouteBuilder örnek -

context.addRoutes(new RouteBuilder() {

Biz geçersiz kılıyoruz configure doğrudan bir URI'dan bir yol ekleme yöntemi DistributeOrderDSLsistem konsoluna. Xpath sorgusunu kullanarak bazı filtreleme sağlıyoruz.

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

Rotayı ekledikten sonra bağlamı başlatıyoruz -

context.start();

Ardından, doğrudan URI'mızı oluşturmak için kod ekliyoruz - DistributeOrderDSL.

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

Son olarak, işlemeye başlıyoruz -

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

Şimdi, Java DSL kodunuz tamamlandığında, uygulamayı test etmeden önce geriye kalan tek şey, order.xmlprojenize dosya. Bu amaçla Giriş bölümünde gösterilen örnek XML'i kullanabilirsiniz.

Test sonuçları

Uygulamayı çalıştırdığınızda, aşağıdaki çıktıyı görürsünüz -

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

Burada yalnızca Sabun siparişlerinin listelendiğini unutmayın. Bunu yerel bir dosyada saklamak isterseniz,stream.out satırında ve aşağıdaki satırı uncomment your configure yöntem -

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

Sonraki bölümümüzde Deve Yayını nasıl kullanacağımızı öğreneceğiz.