JBoss Fuse - Unta Apache
Dalam bab ini, kita akan membahas apa itu Apache Camel dan bagaimana cara efektif merutekan data antar titik akhir, bersama dengan beberapa contoh.
Apa Apache Camel?
Apache Camel adalah kerangka kerja integrasi sumber terbuka yang dimulai pada awal 2007.
Ini adalah pendekatan berbasis EIP (Enterprise Integration Pattern) yang menyediakan beberapa implementasi pola out of the box yang dapat digunakan untuk memecahkan masalah integrasi perusahaan. EIP hanyalah solusi yang terbukti untuk masalah yang terdokumentasi dengan baik dan berulang dalam integrasi perusahaan.
Camel juga dikenal sebagai mesin perutean dan mediasi karena secara efektif merutekan data antar titik akhir, sambil mengambil beban berat seperti transformasi format data, konektivitas titik akhir, dan banyak lagi.
Contoh Dasar
Prasyarat untuk menggunakan Apache Camel adalah -
- Java
- Maven
- Redhat JBoss Fuse 6.1-GA-379
Buat kerangka dasar Aplikasi
mvn:archetype generate
–DgroupId = com.tutorialpoint.app
–DartifactId = camel-first-app
–DarchetypeGroupId = org.apache.camel.archetypes
–DarchetypeArtifactId = camel-archetype-spring
–DinteractiveMode = false -X
Ini harus menghasilkan struktur direktori berikut.
Ini adalah kerangka dasar dari aplikasi Unta kami yang sedang dibuat.
Edit unta-konteks.xml
Edit camel-first-app → src → main → resources → META-INF\spring\camel-context.xml agar cocok seperti di bawah ini
<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<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">
<!-- here is a sample which processes the input file
(leaving them in place - see the 'noop' flag)
then performs content based routing on the message using XPath -->
<route>
<from uri = "file:///d:/src/data?noop=false"/>
<choice>
<when>
<xpath>/person/city = 'London'</xpath>
<log message = "UK message"/>
<to uri = "file:///d:/target/messages/uk"/>
</when>
<otherwise>
<log message = "Other message"/>
<to uri = "file:///d:/target/messages/others"/>
</otherwise>
</choice>
</route>
</camelContext>
</beans>
Edit pom.xml
Tambahkan kode berikut di dalam <plugins> </plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>
${project.artifactId}
</Bundle-SymbolicName>
<Import-Package>*</Import-Package>
</instructions>
</configuration>
</plugin>
Ubah jenis kemasan dari jar → bundle.
<packaging>bundle</packaging>
Bangun proyek menggunakan perintah berikut -
mvn clean install
Pasang Proyek ke Fuse
Mulai Fuse menggunakan Fuse.bat/start.bat. Jika Anda memulai Fuse menggunakanstart.bat, gunakan client.batuntuk terhubung ke Fuse. Anda harus mendapatkan UI seperti yang ditunjukkan pada tangkapan layar berikut.
Ini adalah CLI untuk mengakses perintah Karaf dan Fuse.
install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT
Uji apakah Proyek Anda sedang Berjalan
Sekarang aplikasi Anda harus diinstal di Fuse. Salin direktori data di dalamnyacamel-first-app dan letakkan di D:/src/ dan harus menyalin pesan yang memiliki city = London D:/target/merssages/uk.
Tempatkan file input di D:/src/data
Input
Message1.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
<firstName>James</firstName>
<lastName>Strachan</lastName>
<city>London</city>
</person>
Message2.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
<firstName>Hiram</firstName>
<lastName>Chirino</lastName>
<city>Tampa</city>
</person>
Output
Di D: / target / messages / uk
<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
<firstName>James</firstName>
<lastName>Strachan</lastName>
<city>London</city>
</person>
Di D: / target / messages / others
<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
<firstName>Hiram</firstName>
<lastName>Chirino</lastName>
<city>Tampa</city>
</person>