Menggunakan Apache Camel dengan Spring

1. Gambaran keseluruhan

Artikel ini akan menunjukkan cara mengkonfigurasi dan menggunakan Apache Camel dengan Spring.

Apache Camel menyediakan banyak komponen berguna yang menyokong perpustakaan seperti JPA, Hibernate, FTP, Apache-CXF, AWS-S3 dan tentunya banyak yang lain - semuanya untuk membantu mengintegrasikan data antara dua sistem yang berbeza.

Sebagai contoh, dengan menggunakan komponen Hibernate dan Apache CXF, anda dapat menarik data dari pangkalan data dan menghantarnya ke sistem lain melalui panggilan API REST.

Dalam tutorial ini, kita akan membahas contoh Camel yang mudah - membaca fail dan menukar isinya menjadi huruf besar dan kemudian kembali ke huruf kecil. Kami akan menggunakan komponen File Camel dan Spring 4.2.

Berikut adalah perincian lengkap contoh:

  1. Baca fail dari direktori sumber
  2. Tukar kandungan fail ke huruf besar menggunakan Pemproses tersuai
  3. Tulis output yang ditukar ke direktori tujuan
  4. Tukar kandungan fail ke huruf kecil menggunakan Camel Translator
  5. Tulis output yang ditukar ke direktori tujuan

2. Menambah Ketergantungan

Untuk menggunakan Apache Camel with Spring, anda memerlukan kebergantungan berikut dalam fail POM anda:

 2.16.1 4.2.4.RELEASE    org.apache.camel camel-core ${env.camel.version}   org.apache.camel camel-spring ${env.camel.version}   org.apache.camel camel-stream ${env.camel.version}   org.springframework spring-context ${env.spring.version}  

Oleh itu, kami mempunyai:

  • inti unta - kebergantungan utama untuk Apache Camel
  • unta-spring - membolehkan kita menggunakan Camel dengan Spring
  • aliran unta - kebergantungan pilihan, yang boleh anda gunakan (misalnya) untuk memaparkan beberapa mesej di konsol semasa laluan berjalan
  • spring-konteks - kebergantungan Spring standard, yang diperlukan dalam kes kita kerana kita akan menjalankan laluan Camel dalam konteks Spring

3. Konteks unta musim bunga

Pertama, kami akan membuat fail Spring Config di mana kemudian kami akan menentukan laluan Camel kami.

Perhatikan bagaimana fail mengandungi semua ruang nama dan skema Apache Camel dan Spring yang diperlukan:

The elemen mewakili (tidak menghairankan) konteks Unta, yang dapat dibandingkan dengan konteks aplikasi Spring. Sekarang fail konteks anda sudah siap untuk mula menentukan laluan Camel.

3.1. Laluan Unta Dengan Pemproses Tersuai

Seterusnya kami akan menulis laluan pertama kami untuk menukar kandungan fail menjadi huruf besar.

Kita perlu menentukan sumber dari mana laluan akan membaca data. Ini boleh menjadi pangkalan data, fail, konsol, atau sejumlah sumber lain. Dalam kes kami, ia akan menjadi fail.

Maka kita perlu menentukan pemproses data yang akan dibaca dari sumbernya. Untuk contoh ini, kita akan menulis kelas pemproses tersuai. Kelas ini akan menjadi kacang musim bunga yang akan melaksanakan Antaramuka Pemproses Camel standard.

Setelah data diproses, kita perlu memberitahu laluan ke mana untuk mengarahkan data yang diproses. Sekali lagi, ini dapat menjadi salah satu dari pelbagai output, seperti pangkalan data, fail, atau konsol. Dalam kes kami, kami akan menyimpannya dalam fail.

Untuk mengatur langkah-langkah ini, termasuk input, pemproses, dan output, tambahkan rute berikut ke file konteks Camel:

Selain itu, kita mesti menentukan kacang myFileProcessor :

3.2. Pemproses Huruf Besar

Sekarang kita perlu membuat pemproses fail khusus yang kita tentukan dalam kacang kita. Ia mesti melaksanakan antara muka Prosesor Camel , menentukan satu kaedah proses , yang mengambil objek Exchange sebagai inputnya. Objek ini memberikan perincian data dari sumber input.

Kaedah kami mesti membaca mesej dari Exchange , huruf besar kandungan, dan kemudian menetapkan kandungan baru itu kembali ke objek Exchange :

public class FileProcessor implements Processor { public void process(Exchange exchange) throws Exception { String originalFileContent = (String) exchange.getIn().getBody(String.class); String upperCaseFileContent = originalFileContent.toUpperCase(); exchange.getIn().setBody(upperCaseFileContent); } }

Kaedah proses ini akan dijalankan untuk setiap input yang diterima dari sumber.

3.3. Pemproses Huruf Kecil

Sekarang kita akan menambahkan output lain ke laluan Unta kita. Kali ini, kami akan menukar data fail input yang sama menjadi huruf kecil. Kali ini, kami tidak akan menggunakan pemproses khusus, bagaimanapun; kami akan menggunakan ciri Penterjemah Mesej Apel Camel. Ini adalah laluan unta yang dikemas kini:

     ${body.toLowerCase()}   

4. Menjalankan Aplikasi

Untuk membuat laluan kami diproses, kami hanya perlu memuatkan fail konteks Camel ke dalam konteks aplikasi Spring:

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context.xml"); 

Setelah laluan berjaya dijalankan, dua fail akan dibuat: satu dengan kandungan huruf besar, dan satu dengan kandungan huruf kecil.

5. Kesimpulan

Sekiranya anda melakukan kerja integrasi, Apache Camel pasti dapat mempermudah sesuatu. Perpustakaan menyediakan komponen plug-and-play yang akan membantu anda mengurangkan kod plat boiler dan fokus pada logik utama pemprosesan data.

Dan jika anda ingin meneroka konsep Corak Integrasi Perusahaan secara terperinci, anda harus melihat buku ini yang ditulis oleh Gregor Hohpe dan dan Bobby Woolf, yang berkonsepkan EIP dengan sangat bersih.

Contoh yang dijelaskan dalam artikel ini terdapat dalam projek di GitHub.