JBoss Fuse - Konsep Unta

Dalam bab ini, kita akan memahami berbagai Konsep Unta. Mari kita mulai dengan mengambil contoh dasar untuk memahami konsep inti.

CamelContext

Setiap aplikasi unta memiliki setidaknya satu CamelContext. Ini adalah tempat kami menambahkan rute unta. Ini mirip denganApplicationContext Musim Semi.

Konteks unta dapat diartikan sebagai wadah yang menyatukan semua hal. Satu konteks unta dapat memiliki banyak rute di dalamnya.

Rute

CamelContext mungkin berisi satu atau lebih rute. Rute adalah logika integrasi yang menentukan bagaimana data akan mengalir dalam konteks unta dari satu titik akhir ke titik lainnya.

Titik akhir

Endpoint adalah akhir saluran di mana sistem dapat mengirim atau menerima pesan. Inilah yang kita sebut sebagai tujuan atau sumber dalam bahasa komunikasi.

Komponen

Komponen adalah titik perluasan di Camel. Komponen dapat menjadi antarmuka ke teknologi, format data, transformator, dll. Mereka juga dapat bertindak sebagai pabrik untuk titik akhir.

EIP

EIP adalah singkatan dari Enterprise Integration Pattern. Ini diidentifikasi dan solusi terkenal untuk masalah yang berulang. Camel mendukung sebagian besar Pola Integrasi Perusahaan.

Router Berbasis Konten

Pola CBR memungkinkan kita untuk merutekan data sesuai dengan konten file input.

Pola ini digunakan ketika kita harus merutekan nilai tergantung pada isi dari input.

Contoh berikut akan membaca data dari D:/data/inputdirektori. Setelah membaca, itu akan memeriksa tag nilai di dalam tag data. Jika tag nilai berisivalue1, itu akan dikirim ke D:/value1, Jika berisi value2, itu akan dikirim ke D:/value2 dan jika tidak satupun dari keduanya, maka akan dikirimkan ke orang lain.

<CamelContext xmlns = "http://camel.apache.org/schema/spring">
   <route>
      <from uri = "file:///D:/data/input"/>
      <choice>
         <when>
            <xpath>/data/value = 'value1'</xpath>
            <to uri = "file:///D:/value1"/>
         </when> 
         <when>
            <xpath>/data/value = 'value2'</xpath>
            <to uri = "file:///D:/value2"/>
         </when>  
			
         <otherwise>
            <to uri = "file:///D:/others "/>
         </otherwise>
			
      </choice>
   </route>
</camelContext>

Input

D: /data/input/message1.xml

<data>
   <value>value1</value>
</data>

D: /data/input/message2.xml

<data>
   <value>value2</value>
</data>

Output

D: / nilai1 /

<data>
   <value>value1</value>
</data>

D: / nilai2 /

<data>
   <value>value2</value>
</data>

Pembelah

Pola pemisah digunakan untuk membagi data masukan menjadi beberapa bagian yang lebih kecil.

Pola ini digunakan sebagian besar waktu dengan input data yang sangat besar yang perlu dipecah menjadi beberapa bagian, sehingga dapat diproses. Ini memecah input menjadi fragmen yang lebih kecil berdasarkan string token input.

<CamelContext xmlns = "http://camel.apache.org/schema/spring">
   <route>
      <from uri = "file:///D:/inbox"/>
      <split streaming = "true">
         <tokenize token = "order" xml = "true"/>
         <to uri = "activemq:queue:order"/>
      </split>
   </route>
</CamelContext>

Input

D: /inbox/message.xml

<order>
   <data>
      <value>value1</value>
   </data>
</order>

<order>
   <data>
      <value>value2</value>
   </data>
</order>

<order>
   <data>
      <value>value3</value>
   </data>
</order>

Output

Jika Anda memeriksa AMQ, Anda akan menemukan 3 pesan yang diposting.

<order>
   <data>
      <value>value4</value>
   </data>
</order>

Daftar Penerima

Pola daftar penerima digunakan ketika daftar penerima perlu diambil dari badan pesan itu sendiri.

Dalam contoh berikut, pesan akan dikirim ke semua penerima yang terdaftar di tag pelanggan sebagai daftar string yang dipisahkan koma.

<CamelContext xmlns = "http://camel.apache.org/schema/spring">
   <route>
      <from uri = "jms:xmlOrders" />
      <recipientList>
         <xpath>/order/customer</xpath>
      </recipientList>
   </route>
</camelContext>

EIP lainnya

Camel memberikan dukungan kepada hampir semua EIP yang diidentifikasi. Beberapa EIP yang umum digunakan adalah seperti yang disebutkan di bawah ini.

  • Log - Untuk mencatat pesan lengkap atau sebagian darinya

  • Message Filter - Memfilter konten pesan

  • Re-Sequencer - Untuk mendapatkan semua token secara berurutan

  • Wiretap - Untuk memeriksa pesan perjalanan

Daftar lengkap EIP dan penggunaannya dapat ditemukan di dokumentasi resmi Camel http://camel.apache.org/eip.html

Penanganan Pengecualian pada Unta

Using Error Handler - Ini adalah cara termudah untuk menangani pengecualian pada unta.

Untuk menggunakan ini, kita harus mengkonfigurasi kacang kelas penanganan Kesalahan dan menyediakannya sebagai referensi CamelContext errorHandlerRef atribut.

<bean id = "loggingErrorHandler" class = "org.apache.camel.builder.LoggingErrorHandler">
   <property name = "logName" value = "mylogger.name"/>
   <property name = "level" value = "DEBUG"/>
</bean>

<camelContext errorHandlerRef = ” loggingErrorHandler” >
   …
</camelContext>

Menggunakan Try Catch Akhirnya

Unta juga mendukung gaya Java Try Catch Finally block untuk penanganan kesalahan.

Sama seperti Java, ia memiliki tiga blok berikut -

  • doTry blok berisi kode yang dapat menghasilkan pengecualian.

  • doCatch blok berisi kode yang perlu dijalankan jika ada pengecualian.

  • doFinallyblok memiliki kode yang harus dijalankan terlepas dari pengecualian. Itu akan selalu dijalankan tidak peduli apakah pengecualian dimunculkan atau tidak.

Note- Mock adalah komponen pengujian dan tidak direkomendasikan untuk tujuan lain. Ini adalah komponen dalam unta yang digunakan untuk pengujian seperti komponen jMOck dalam pengembangan yang digerakkan oleh Uji.

<route>
   <from uri = "direct:start"/>
   <doTry>
      <process ref = "someProcesorThatmayFail"/>
      <to uri = "mock:result"/>
		
      <doCatch>
         <exception>java.io.IOException</exception>
         <exception>java.lang.IllegalStateException</exception>
         <to uri = "mock:catch"/>
      </doCatch>
		
      <doFinally>
         <to uri = "mock:finally"/>
      </doFinally>
		
   </doTry>
</route>

Dalam contoh di atas, kita bisa memberikan daftar pengecualian yang perlu ditangani oleh blok catch.

Menerapkan Bundel di Fuse

Mulai Fuse menggunakan Fuse.bat/start.bat.

Jika Anda memulai Fuse menggunakan start.bat, gunakan client.bat untuk menyambung 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:group.id /artifact.id/version 
e.g. install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT