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>