Pertanyaan Apa sebenarnya Apache Camel?


Saya tidak mengerti apa sebenarnya Unta tidak.

Jika Anda bisa memberikan kata-kata 101 sebuah pengantar untuk Camel:

  • Apa sebenarnya itu?
  • Bagaimana cara berinteraksi dengan aplikasi yang ditulis di Java?
  • Apakah itu sesuatu yang menyatu dengan server?
  • Apakah ini program mandiri?

Tolong jelaskan apa itu Camel.


1137
2018-01-13 02:32


asal


Jawaban:


Jika Anda memiliki 5 hingga 10 menit, saya biasanya menyarankan orang untuk membaca ini Integrasi dengan Apache Camel oleh Jonathan Anstey. Ini adalah bagian yang ditulis dengan baik yang memberikan pengantar singkat dan ikhtisar dari beberapa konsep Camel, dan mengimplementasikan use case dengan contoh kode. Di dalamnya, Jonathan menulis:

Apache Camel adalah kerangka kerja Java open source yang berfokus untuk membuat integrasi lebih mudah dan lebih mudah diakses oleh pengembang. Ia melakukan ini dengan menyediakan:

  • implementasi konkrit dari semua yang banyak digunakan Pola Integrasi Perusahaan (EIP)
  • konektivitas ke berbagai macam transportasi dan API
  • mudah digunakan Bahasa Spesifik Domain (DSLs) untuk kawat EIP dan mengangkut bersama

Ada juga bab gratis Camel Beraksi yang memperkenalkan Camel di bab pertama. Jonathan adalah salah satu penulis dalam buku itu dengan saya.


596
2018-01-13 10:49



Saya ambil untuk menggambarkan ini dengan cara yang lebih mudah ...

Untuk memahami apa itu Apache Camel, Anda perlu memahami Pola Integrasi Enterprise apa.

Mari kita mulai dengan apa yang mungkin sudah kita ketahui: Pola Singleton, pola Pabrik, dll; Mereka hanyalah cara mengatur solusi Anda untuk masalah, tetapi mereka bukan solusi itu sendiri. Pola-pola ini dianalisis dan diekstraksi untuk kita semua oleh Geng Empat, ketika mereka menerbitkan buku mereka: Pola desain. Mereka menyelamatkan sebagian dari kita upaya luar biasa dalam memikirkan bagaimana cara terbaik menyusun kode kita.

Sama seperti Geng Empat, Gregor Hohpe dan Bobby Woolf menulis buku ini Pola Integrasi Perusahaan (EIP) di mana mereka mengusulkan dan mendokumentasikan satu set pola baru dan cetak biru untuk bagaimana kita bisa terbaik desain sistem berbasis komponen besar, di mana komponen dapat berjalan pada proses yang sama atau di mesin yang berbeda.

Mereka pada dasarnya mengusulkan agar kita menyusun sistem kita pesan berorientasi - di mana komponen berkomunikasi satu sama lain menggunakan pesan sebagai input dan output dan tidak ada yang lain. Mereka menunjukkan kepada kita seperangkat pola lengkap yang dapat kita pilih dan terapkan dalam berbagai komponen kita yang akan bersama-sama membentuk keseluruhan sistem.

Jadi apa itu Apache Camel?

Apache Camel menawarkan kepada Anda antarmuka untuk EIP, objek dasar, implementasi yang biasanya diperlukan, alat debugging, sistem konfigurasi, dan banyak pembantu lain yang akan menghemat banyak waktu ketika Anda ingin menerapkan solusi Anda untuk mengikuti EIP.

Ambil MVC. MVC cukup sederhana dalam teori dan kami dapat menerapkannya tanpa bantuan kerangka kerja apa pun. Namun, kerangka kerja MVC yang baik memberi kita struktur yang siap digunakan dan telah bekerja ekstra dan memikirkan semua hal "sisi" lain yang Anda butuhkan ketika Anda membuat proyek MVC yang besar dan itulah mengapa kami menggunakannya hampir sepanjang waktu.

Itulah tepatnya yang dilakukan Apache Camel untuk EIP. Ini adalah kerangka kerja siap produksi yang lengkap untuk orang-orang yang ingin menerapkan solusi mereka untuk mengikuti EIP.


929
2017-07-18 11:38



Membuat sebuah Deskripsi Proyek seharusnya tidak rumit.

Saya katakan:

Apache Camel adalah lem teknologi pesan dengan routing. Ini bergabung bersama pesan titik awal dan akhir yang memungkinkan pemindahan pesan dari berbagai sumber ke tujuan yang berbeda. Sebagai contoh: JMS -> JSON, HTTP -> JMS atau funneling FTP -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia mengatakan:

Apache Camel adalah routing berbasis aturan dan mesin mediasi yang menyediakan implementasi berbasis Java Pola Enterprise Integration Patterns menggunakan API (atau deklaratif Java Domain Specific Language) untuk mengkonfigurasi routing dan aturan mediasi. Bahasa khusus domain berarti bahwa Apache Camel dapat mendukung penyelesaian aturan routing aman-jenis-pintar dalam IDE Anda menggunakan kode Java biasa tanpa banyak file konfigurasi XML; meskipun konfigurasi XML di dalam Spring juga didukung.

Lihat? Itu tidak sulit kan?


636
2018-05-31 15:37



Pendeknya:

Ketika ada persyaratan untuk menghubungkan / mengintegrasikan sistem, Anda mungkin perlu menghubungkan ke beberapa sumber data dan kemudian memproses data ini untuk mencocokkan kebutuhan bisnis Anda.

Untuk melakukan itu:

1) Anda dapat mengembangkan program khusus yang akan melakukannya (mungkin memakan waktu dan sulit dipahami, dipelihara untuk pengembang lain)

2) Sebagai alternatif, Anda dapat menggunakan Apache Camel untuk melakukannya dengan cara yang standar (sebagian besar konektor sudah dikembangkan untuk Anda, Anda hanya perlu mengaturnya dan menghubungkan logika Anda - disebut Proses):

Unta akan membantu Anda untuk:

  1. Konsumsi data dari berbagai sumber / format
  2. Proses data ini
  3. Output data ke sembarang sumber / format

Dengan menggunakan Apache Camel, Anda akan mempermudah untuk memahami / mempertahankan / memperluas sistem Anda ke pengembang lain.

Apache Camel dikembangkan dengan Pola Integrasi Perusahaan. Pola membantu Anda mengintegrasikan sistem dengan cara yang baik :-)


106
2018-06-04 20:48



Diagram lebih baik daripada ribuan deskripsi. Diagram ini menggambarkan arsitektur Camel.

enter image description here


66
2017-12-27 02:48



Unta mengirim pesan dari A ke B:

enter image description here

Mengapa seluruh kerangka kerja untuk ini? Nah, bagaimana jika Anda memiliki:

  • banyak pengirim dan banyak penerima
  • selusin protokol (ftp, http, jms, dll.)
  • banyak aturan yang rumit
    • Kirim pesan A ke Penerima A dan B saja
    • Kirim pesan B ke Penerima C sebagai XML, tetapi sebagian menterjemahkan saya t, memperkaya itu (tambahkan metadata) dan JIKA kondisi X, lalu kirimkan ke Receiver D juga, tapi sebagai CSV.

Jadi sekarang Anda perlu:

  • menterjemahkan antar protokol
  • lem komponen bersama
  • tentukan rute - apa yang terjadi di mana
  • menyaring beberapa hal dalam beberapa kasus

Camel memberi Anda di atas (dan banyak lagi) di luar kotak:

enter image description here

dengan bahasa DSL keren bagi Anda untuk menentukan apa dan bagaimana:

  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}

Lihat juga ini dan ini dan Camel in Action (seperti yang dikatakan orang lain, buku yang sangat bagus!)


54
2018-04-28 17:53



Salah satu hal yang perlu Anda pahami, sebelum Anda mencoba memahami Apache Camel, adalah Pola Integrasi Perusahaan. Tidak semua orang di lapangan benar-benar sadar akan mereka. Meskipun Anda pasti bisa membaca buku Pola Integrasi Perusahaan, cara cepat untuk mempercepat mereka adalah dengan membaca sesuatu seperti artikel Wikipedia di Integrasi Aplikasi Perusahaan.

Satu Anda telah membaca dan memahami area subjek, Anda akan jauh lebih mungkin untuk memahami tujuan Apache Camel

HTH


45
2018-01-13 03:36



BERDASARKAN ANALOGI

Routing berbasis Camel dapat dipahami dengan mudah dengan menempatkan diri Anda pada posisi seorang pemilik Airline (mis.: American Airlines, Jet Airways).

Tujuan dari 'maskapai Anda' adalah untuk 'membawa' penumpang 'dari satu' kota 'ke kota lain di dunia. Anda menggunakan pesawat terbang dari berbagai 'perusahaan pesawat' seperti Boeing, Airbus, HAL untuk mengangkut penumpang.

Penumpang papan penerbangan Anda menggunakan 'bandara' dari kota dan deboards mereka menggunakan bandara ke kota. Seorang penumpang dapat 'bepergian' ke beberapa kota, tetapi di mana-mana mereka harus pergi ke bandara untuk melakukan perjalanan antara pesawat udara dan kota Anda.

Perhatikan bahwa penumpang yang 'berangkat' dari kota pada dasarnya 'tiba' ke dalam pesawat maskapai Anda. Dan seorang 'penumpang' yang tiba di kota, pada dasarnya berangkat dari pesawat. Karena kita berada dalam posisi pemilik maskapai penerbangan, istilah 'penumpang kedatangan' dan 'penumpang yang berangkat' dibalik dari pengertian konvensional kita yang didasarkan pada perspektif kota.

Infrastruktur 'bandara' yang sama untuk setiap kota digunakan oleh penumpang 'yang berangkat' dan penumpang 'kedatangan'. Sebuah bandara menyediakan 'infrastruktur berangkat' bagi penumpang yang berangkat, yang berbeda dari 'infrastruktur kedatangan' yang disediakan untuk penumpang yang tiba.

Penumpang dapat terus melakukan hari mereka untuk kegiatan mereka karena berbagai 'fasilitas' yang disediakan di dalam pesawat oleh maskapai penerbangan Anda, saat bepergian.

Selain itu, maskapai Anda juga menyediakan fasilitas lounge untuk perawatan khusus seperti 'memahami bahasa lokal' dan atau mempersiapkan Anda untuk 'bepergian'.

Mari ganti beberapa kata / frasa yang digunakan di atas dengan mengikuti:

maskapai Anda: Apache Camel

perusahaan pesawat terbang: Mekanisme transportasi

pesawat maskapai penerbangan Anda: mekanisme transportasi yang mendasari Apache Camel

membawa: rute

penumpang: pesan;

kota: sistem;

bandara: Komponen Camel;

memahami bahasa lokal: Ketik Konversi;

berangkat: memproduksi, diproduksi

tiba: mengkonsumsi, dikonsumsi

perjalanan: dialihkan

fasilitas: disediakan

Setelah mengganti kata-kata, inilah yang Anda dapatkan:

Tujuan 'Apache Camel' adalah dengan mengarahkan 'pesan' dari satu 'sistem' ke sistem lain di dunia. Unta Apache menggunakan mekanisme transportasi yang berbeda untuk routing pesan.

Apache Camel mengambil pesan menggunakan 'Komponen berbasis Camel' dari sistem 'dari' dan menjatuhkannya menggunakan 'Komponen Berbasis Camel' dari sistem 'ke'. Sebuah pesan dapat merutekan ke beberapa sistem, tetapi di mana-mana mereka harus melalui 'Komponen Berbasis Camel' untuk melakukan perjalanan antara 'mekanisme transport yang mendasari' Apache Camel dan sistem.

Perhatikan bahwa pesan 'dihasilkan' dari sistem pada dasarnya 'dikonsumsi' ke dalam mekanisme transport yang mendasari Apache Camel '. Dan pesan yang dikonsumsi oleh suatu sistem, pada dasarnya dihasilkan oleh 'mekanisme transportasi yang mendasari Apache Camel'.

Karena kita mencoba memahami Camel, kita harus berpikir dari perspektif Camel di sini dan seterusnya. Arti istilah 'pesan konsumen' dan 'pesan produser', dengan demikian, dibalik dari pengertian konvensional kita yang didasarkan pada perspektif sistem.

Infrastruktur pengkodean 'Camel based Component' yang sama digunakan oleh 'pesan produsen' dan 'pesan konsumen'. A 'Camel based Component' menyediakan 'endpoint produsen' untuk 'pesan produsen' dan 'titik akhir konsumen' untuk 'pesan konsumen'.

Pesan dapat diproses oleh Camel saat sedang dirutekan.

Di atas perutean ini, Camel menyediakan fitur khusus seperti 'Ketik Konversi' dan banyak lagi ...


41
2018-04-13 12:54