Apache Camel - Menggunakan dengan Spring
Kami sekarang akan membuat ulang aplikasi dari bab sebelumnya menggunakan Spring. Ini akan memberi kita gambaran tentang cara membuat perutean Unta dalam XML daripada DSL.
Membuat Proyek Baru
Buat yang baru Maven proyek dan tentukan berikut ini -
GroupId: BasketWithSpring
ArtifactId: BasketWithSpring
Pilih lokasi default untuk proyek Anda atau jika Anda lebih suka menentukan direktori pilihan Anda.
Menambahkan Dependensi
Selain dependensi inti yang Anda gunakan di aplikasi sebelumnya, Anda perlu menambahkan beberapa dependensi lagi untuk menggunakan Spring. Dependensi ditambahkan di pom.xml. Sekarang, buka pom.xml dan tambahkan dependensi berikut -
<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>
Membuat Java DSL untuk Spring
Sekarang mari kita buat kelas Java baru bernama DistributeOrderXML. Tambahkan kode berikut untuk itu -
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();
}
}
}
Dalam main metode, pertama kita membuat sebuah instance ApplicationContext, yang merupakan antarmuka pusat dalam aplikasi Spring. Dalam konstruktornya, kami menetapkan nama file XML yang berisi informasi perutean dan pemfilteran kami.
ApplicationContext appContext = new ClassPathXmlApplicationContext(
"SpringRouteContext.xml");
Selanjutnya, kami membuat CamelContext menentukan dibuat di atas ApplicationContext dalam parameternya.
CamelContext camelContext = SpringCamelContext.springCamelContext(appContext, false);
Pada titik ini, perutean dan pemfilteran kami sudah siap. Oleh karena itu, kami memulaiCamelContext menggunakan nya startmetode. Seperti dalam kasus sebelumnya, kami mendefinisikan Endpoint untuk memuat file order.xml dan memulai pemrosesan. Sekarang, mari kita pahami bagaimana perutean didefinisikan dalam XML.
Membuat Konteks Aplikasi
Tambahkan file XML baru ke proyek dan beri nama SpringRouteContext.xml. Potong-n-tempel konten berikut ke file ini.
<?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>
Di sini, kami mendefinisikan kueri xpath sebagai berikut, perhatikan bahwa kami sekarang memilih semua pesanan untuk "minyak".
<xpath>//order[@product = 'Oil']/items</xpath>
Endpoint keluarannya berlipat ganda. Titik akhir pertama menentukanorder folder dan yang kedua menentukan konsol.
<to uri = "file:src/main/resources/order/"/>
<to uri = "stream:out"/>
Jalankan aplikasinya.
Hasil tes
Saat Anda menjalankan aplikasi, Anda akan melihat output berikut di layar.
<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>
Lihat orderfolder di jalur yang Anda tentukan. Anda akan menemukan file yang baru dibuat yang berisi kode XML di atas.
Kesimpulan
Camel menyediakan kerangka kerja siap pakai yang mengimplementasikan EIP untuk memudahkan proyek integrasi Anda. Ini mendukung pengkodean dalam bahasa khusus domain dan juga penggunaan XML.