Apache Camel - Proyek

Kami akan menggunakan Maven untuk membangun proyek Camel. Meskipun demikian, kami lebih suka menggunakan IntelliJ IDE untuk pengembangan. Anda dapat menggunakan IDE pilihan Anda untuk proyek ini.

Membuat Proyek Baru

Buat yang baru Maven proyek dan tentukan berikut ini -

GroupId: Basket
ArtifactId: Basket

Pilih lokasi default untuk proyek Anda atau jika Anda lebih suka menentukan direktori pilihan Anda.

Menambahkan Dependensi

Anda perlu menambahkan beberapa dependensi untuk menggunakan Camel. Dependensi ditambahkanpom.xml. Jadi buka pom.xml dan tambahkan dua dependensi berikut -

<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- Kami membutuhkan dependensi minimum untuk aplikasi kami. Saat Anda menggunakan lebih banyak komponen Camel dari perpustakaannya, Anda perlu menambahkan dependensi yang sesuai di file pom.xml ini.

Membuat Java DSL

Selanjutnya, Anda akan menulis kode pemfilteran dan perutean Anda di Java DSL. Buat kelas Java baru bernamaDistributeOrderDSL. Tambahkan kode berikut untuk itu -

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

Dalam main metode, pertama kita buat CamelContext dengan membuat contoh implementasi default yang disediakan di DefaultCamelContext kelas.

CamelContext context = new DefaultCamelContext();

Selanjutnya, kami menambahkan rute dengan membuat anonim RouteBuilder contoh -

context.addRoutes(new RouteBuilder() {

Kami mengganti configure metode untuk menambahkan rute dari URI langsung DistributeOrderDSLke konsol sistem. Kami menyediakan beberapa pemfilteran dengan menggunakan kueri xpath.

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

Setelah menambahkan rute, kita mulai konteksnya -

context.start();

Selanjutnya, kami menambahkan kode untuk membuat URI langsung kami - DistributeOrderDSL.

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

Akhirnya, kami memulai pemrosesan -

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

Sekarang, setelah kode Java DSL Anda selesai, satu-satunya hal yang tersisa sebelum menguji aplikasi adalah menambahkan order.xmlmengajukan ke proyek Anda. Anda dapat menggunakan contoh XML yang ditunjukkan di bab Pendahuluan untuk tujuan ini.

Hasil tes

Saat Anda menjalankan aplikasi, Anda akan melihat output berikut -

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

Perhatikan bahwa hanya pesanan untuk Sabun yang dicantumkan di sini. Jika Anda ingin menyimpan ini ke file lokal, cukup beri komentarstream.out baris dan hapus komentar pada baris berikut di configure metode -

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

Di bagian selanjutnya, kita akan belajar bagaimana menggunakan Unta dengan Musim Semi.