Apache Camel - Yay ile Kullanma

Şimdi Spring'i kullanarak önceki bölümdeki uygulamayı yeniden oluşturacağız. Bu bize bir DSL yerine XML'de Deve yönlendirmesinin nasıl oluşturulacağı konusunda bir fikir verecektir.

Yeni Proje Oluşturma

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

GroupId: BasketWithSpring
ArtifactId: BasketWithSpring

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

Bağımlılıklar Ekleme

Önceki uygulamada kullandığınız temel bağımlılıklara ek olarak, Spring'i kullanmak için birkaç bağımlılık daha eklemeniz gerekir. Bağımlılıklar pom.xml dosyasına eklenir. Şimdi, pom.xml'yi açın ve aşağıdaki bağımlılıkları ekleyin -

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

Bahar için Java DSL Oluşturmak

Şimdi adında yeni bir Java sınıfı oluşturalım DistributeOrderXML. Aşağıdaki kodu ekleyin -

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

İçinde main yöntem, önce bir örnek oluşturuyoruz ApplicationContext, bir Spring uygulamasındaki merkezi arabirimdir. Yapıcısında, yönlendirme ve filtreleme bilgilerimizi içeren XML dosyasının adını belirtiyoruz.

ApplicationContext appContext = new ClassPathXmlApplicationContext(
   "SpringRouteContext.xml");

Sonra yaratıyoruz CamelContext yukarıda oluşturulanları belirterek ApplicationContext parametresinde.

CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);

Bu noktada, yönlendirmemiz ve filtrelememiz ayarlanmıştır. Bu nedenle,CamelContext kullanarak startyöntem. Önceki durumda olduğu gibi, order.xml dosyasını yüklemek için Bitiş Noktasını tanımlıyor ve işlemeyi başlatıyoruz. Şimdi, XML'de yönlendirmenin nasıl tanımlandığını anlayalım.

Uygulama Bağlamı Oluşturma

Projeye yeni bir XML dosyası ekleyin ve onu çağırın SpringRouteContext.xml. Aşağıdaki içeriği bu dosyaya kesip yapıştırın.

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

Burada xpath sorgusunu şu şekilde tanımlıyoruz, şimdi "petrol" için tüm siparişleri seçtiğimize dikkat edin.

<xpath>//order[@product = 'Oil']/items</xpath>

Çıktı Uç Noktaları birden çoktur. İlk uç nokta,order klasör ve ikincisi konsolu belirtir.

<to uri = "file:src/main/resources/order/"/>
<to uri = "stream:out"/>

Uygulamayı çalıştırın.

Test sonuçları

Uygulamayı çalıştırdığınızda, ekranda aşağıdaki çıktıyı göreceksiniz.

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

Kontrol et ordersizin tarafınızdan belirtilen yoldaki klasör. Yukarıdaki XML kodunu içeren yeni oluşturulmuş bir dosya bulacaksınız.

Sonuç

Camel, entegrasyon projelerinizi kolaylaştırmak için EIP'leri uygulayan kullanıma hazır bir çerçeve sağlar. Alana özgü dillerde kodlamayı ve ayrıca XML kullanımını destekler.