Apache Camel adalah perpustakaan aturan aturan yang sangat praktis yang dapat digunakan untuk memproses acara dan informasi dari berbagai sumber. Anda dapat mengirimkan pesan dalam protokol yang berbeda seperti VM, HTTP, FTP, JMS, dan bahkan dalam sistem file, dan menjaga logika operasi dan pemisahan logika transmisi Anda, yang dapat membuat Anda lebih fokus pada konten pesan.
Dalam artikel ini, saya akan memberikan demonstrasi entri Camel Apache bahasa Java.
Pertama -tama buat pom.xml dari proyek Maven.
<? Xml Version = "1.0" encoding = "UTF-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http: //www.w3 .org/2001/xmlschema-instance "xsi: schemalocation =" http://maven.apache.org/pom/4.0.0htp://maven.apache.org/maven- v4_0.xsd "> <modelversisiinisiinisiniinisiinisini >xsd"> <Modelversisiiniinisiinisiiniinisiinisini> 0 </ModelVersion> Camel-Spring-Demo </Group> <ArtifactId> datang L-SPRING-DEMO </arttifactid> <version> 1.0-snapshot </version> <packaging> Jar </packaging> <propies> Project.Build.Sourceencoding> UTF-8 </project.build.sourceencoding> <camel.version> 2.11.1 </camel.version> </Properties> ency> <groupid> org.apache.camel </groupid> ArtifactId> Camel-core </stifactid> <version> $ {camel.version} </version> </dependency> <dependency> org.slf4j </groupid> <ArttifactId> slf4j-simple </artifactid> <versi> 1.7 .5 </version> </dependency> </dependencies> </joy Project>Di sini kami hanya menggunakan paket unta-core.jar, pada kenyataannya ia menyediakan banyak komponen praktis yang dapat Anda gunakan. Untuk tujuan catatan log, saya menggunakan slf4j-simple sebagai implementasi catatan log, sehingga kita dapat melihat output dari konsol.
Selanjutnya kita hanya perlu membangun kelas perutean. Rute ditentukan oleh cara menyampaikan pesan dari satu ujung ke ujung lainnya. Kami akan membuat file SRC/Main/Java/Camelcoredemo/TimerRoutebuilder.java, mengirim pesan ke prosesor setiap detik, dan mencetaknya secara sederhana.
Paket CamelCoremo; dari ("waktu: // timer1? periode = 1000") .process (prosesor baru () {proses public void (Exchange msg) {log.info ("pemrosesan {}", msg);}});}}Di atas adalah semua kebutuhan untuk contoh ini, dan sekarang dikompilasi dan dijalankan.
Bash> mvn compilebash> mvn exec: java -dexec.mainclass = org.apache.camel.main.main -dexec.args = '-r camelcoremoroutebuilder'
Perhatikan bahwa di sini kami tidak menulis pintu masuk utama kelas Java.
Kontrol CamelContext
Ketika unta dimulai, itu akan membuat objek CamelContext, yang memiliki banyak informasi tentang cara menjalankan unta, dan juga termasuk definisi rute yang kami buat. Sekarang jika Anda ingin mendapatkan lebih banyak kontrol melalui CamelContext, maka Anda perlu menulis kode utama Anda. Saya di sini contoh sederhana.
Paket CamelCoremo; Static Void Main (String [] Args) Melempar Exception {new Timermain () ); ;Dapat dilihat bahwa kita telah menggunakan kembali kelas TimerRoutebuilder yang ada dalam metode creteteroutebuilder (). Sekarang kelas utama kami telah sepenuhnya terkontrol ketika saat dibuat, dimulai, dan menghentikan CamelContext. Objek Context (CamelContext) memungkinkan Anda untuk mengontrol cara mengkonfigurasi unta dalam global, bukan di tingkat rute. Tautan Javadoc -nya memberikan semua metode setter, dan Anda dapat mempelajari apa yang dapat dilakukannya.
Perhatikan bahwa kami juga perlu memberikan sejumlah kecil kode dalam kategori utama kami. Pertama -tama, kita perlu berurusan dengan masalah penutupan yang elegan, jadi kami menambahkan fungsi penutupan Java untuk memanggil metode stop () dari konteksnya. Kedua, setelah konteks dimulai, kita perlu menambahkan blok utas. Jika Anda tidak memblokir utas utama Anda setelah startup, maka itu hanya akan keluar setelah memulai, dan itu tidak akan berguna. Anda akan menjalankan CAMEL sebagai layanan (seperti server) sampai Anda menekan tombol CTRL+C untuk mengakhiri proses.
Tingkatkan kelas utama yang mulai meluncurkan CamelContext
Jika Anda tidak ingin memproses kode pengaturan kelas utama sebanyak contoh di atas, maka Anda dapat mewarisi org.apache. Dengan menggunakan kelas ini, Anda tidak hanya dapat mengizinkan konteks Anda untuk diatur secara otomatis, tetapi juga mendapatkan semua karakteristik baris perintah tambahan, seperti berapa lama proses kontrol berjalan, memungkinkan pelacakan, memuat kelas rute khusus, dan sebagainya.
Merekonstruksi contoh berikut, kodenya adalah sebagai berikut:
Paket CAREDEMO; Static Void Main (String [] Args) Melempar Exception {TimerMain2 Main = new Timermain2 (); ;}} Sekarang kode Timermain2 kurang dari sebelumnya, Anda dapat mencobanya, itu harus sama dengan fitur sebelumnya.
Bash> mvn compilebash> mvn exec: java -dexec.mainclass = camelcoremo.timermain2 -dexec.args = '-t'
Perhatikan bahwa setelah kami memberikan opsi -t, pelacakan rute akan dipesan. Gunakan -h akan melihat semua opsi yang tersedia.
Tambahkan kacang dengan mekanisme pendaftaran unta
Dalam contoh TimerRoutebuilder sebelumnya, kami telah membuat proses anonim dalam kode. Sekarang jika Anda ingin menyatukan beberapa prosesor yang berbeda, menambahkan kacang untuk menambahkan mekanisme pendaftaran unta akan lebih baik mengurangi kebingungan kode. Camel memungkinkan Anda untuk menggunakan pemrosesan sebagai kacang ke ruang registri, dan kemudian Anda hanya perlu menyebutnya sebagai komponen kacang. Berikut ini adalah kode rekonstruksi saya:
Paket CAREDEMO; Static Void Main (String [] Args) Melempar Exception {TimerbeansMain Main = New TimerbeansMain (); ()); = 1000 ") .to (" Bean: ProcessByBean1 ") .to (" Bean: ProcessAagainBean2 "); prosesor {Proses public void (Exchange msg) {log.info (" Proses pertama {} ", msg);}} Kelas statis bean2 mengimplementasikan prosesor {public void proses (Exchange msg) {log.info ("Sec ond proses {}", msg);}}}Sekarang kelas rute lebih ringkas dan jelas, dan pada saat yang sama, kode pemrosesan juga telah direkonstruksi menjadi kelas independen. Ketika Anda perlu menulis rute yang sangat rumit untuk mencapai logika bisnis, metode ini dapat membantu Anda mengatur dan menguji kode Anda dengan lebih baik. Ini memungkinkan Anda untuk membangun kacang pojo yang dapat digunakan kembali seperti "Lego". Ruang registri Camel juga dapat digunakan untuk banyak kegunaan lain.
Contoh rute di atas terdiri dari Java DSL yang disebut SO.
Saya harap artikel ini dapat membantu Anda melewatkan tahap eksplorasi unta.