Saya mencarinya dan digunakan untuk mengirim pesan antara 2 sistem.
Tapi kenapa? Mengapa Anda tidak menggunakan saja Database
?
Harus ada beberapa fitur yang ActiveMQ
memiliki yang Databases
tidak?
Saya mencarinya dan digunakan untuk mengirim pesan antara 2 sistem.
Tapi kenapa? Mengapa Anda tidak menggunakan saja Database
?
Harus ada beberapa fitur yang ActiveMQ
memiliki yang Databases
tidak?
Jawaban:
Ini digunakan untuk berkomunikasi dengan andal antara dua proses terdistribusi.
Ya, Anda bisa menyimpan pesan dalam database untuk berkomunikasi antara dua proses, tetapi segera setelah pesan diterima Anda harus ke DELETE
pesan, Itu berarti baris INSERT
dan DELETE
untuk setiap pesan.
Ketika Anda mencoba untuk skala bahwa sampai berkomunikasi ribuan pesan per detik, Database cenderung jatuh .
Perangkat tengah berorientasi pesan [MOM] seperti ActiveMQ
di sisi lain dibuat untuk menangani kasus penggunaan tersebut.
Mereka berasumsi bahwa pesan dalam sistem yang sehat akan dihapus dengan sangat cepat dan dapat melakukan pengoptimalan untuk menghindari overhead .
Itu juga dapat mendorong pesan ke konsumen daripada konsumen harus melakukan polling untuk pesan baru dengan melakukan kueri SQL.
Ini semakin mengurangi latensi yang terlibat dalam pemrosesan pesan baru yang dikirim ke sistem.
ActiveMQ
, atau secara umum semua implementasi Message Oriented Middleware (MOM) dirancang untuk tujuan pengiriman pesan antara dua aplikasi, atau dua komponen di dalam satu aplikasi.
Pada dasarnya, MOM dan database berbagi dasar yang sama dalam menyediakan penyimpanan data transaksional dan persisten untuk dapat membaca dan menulis.
Perbedaan besar adalah pola penggunaan - di mana database sangat umum dan dioptimalkan untuk pencarian kompleks di beberapa tabel, MOM dioptimalkan untuk membaca pesan, satu per satu, dalam mode seperti FIFO [Antrian].
JMS
, yang merupakan implementasi API ActiveMQ, merupakan landasan penting dalam aplikasi Java Enterprise. Hal ini membuat pesan berbagi format dan semantik yang agak umum, yang membuat integrasi antara aplikasi yang berbeda menjadi lebih mudah.
Tentu saja, ada banyak fitur yang lebih rinci yang hanya di ActiveMQ, protokol kawat seperti OpenWire
, STOMP
dan MQTT
, JMS
, EIP
bersama-sama dengan Apache Camel, pola pesan seperti "permintaan / balasan" dan "mempublikasikan / berlangganan", JMS Bridging, klastering (" jaringan pialang "), yang memungkinkan penskalaan dan distribusi, dll.
Anda harus membaca sedikit tentang topik tersebut jika Anda tertarik karena topiknya agak besar.
ActiveMQ
memiliki dukungan penjadwal yang hebat , yang berarti Anda dapat menjadwalkan pengiriman pesan Anda untuk dikirim pada waktu tertentu .
Kami telah menggunakan fitur ini untuk mengirimkan pengingat pengobatan kepada pasien yang mengunggah detail pengobatan mereka dalam skenario perawatan kesehatan.
Scheduled Jobs
untuk tujuan yang sama.
Dengan RDBMS, saat Anda memproses baris data, Anda biasanya memperbarui sebuah tanda yang menunjukkan bahwa baris tersebut telah diproses sehingga pemrosesan tidak berulang.
Namun, dengan Antrean Pesan, Anda hanya perlu menerima pesan dan konsumen berikutnya akan memproses pesan berikutnya.
Perbedaannya adalah bahwa UPDATE
statment dalam RDBMS adalah operasi yang sangat lambat dibandingkan dengan acknowledge
in activmeq.
Saya ingin menekankan hal-hal berikut:
Terpisah : Sistem dapat berkomunikasi tanpa terhubung. Antrian terletak di antara sistem, satu kegagalan sistem tidak akan pernah mempengaruhi yang lain karena komunikasi dilakukan melalui Antrian. Sistem terus bekerja saat sudah aktif.
Dukungan pemulihan : Pesan dalam Antrian itu sendiri tetap ada. Pesan dapat dikembalikan nanti jika Antrian gagal.
Komunikasi yang Andal : Pertimbangkan sistem yang memproses permintaan klien. Dalam kasus normal, sistem menerima 100 permintaan per menit. Sistem ini tidak dapat diandalkan ketika jumlah permintaan melebihi rata-rata. Dalam kasus seperti itu, Queue dapat mengelola permintaan dan dapat mendorong pesan secara berkala berdasarkan throughput sistem tanpa memutusnya.
Asinkron : Komunikasi server klien tidak memblokir. Setelah klien mengirim permintaan ke server, ia dapat melakukan operasi lain tanpa menunggu respons. Ketika respon yang diterima klien dapat menanganinya kapan saja.
Dari Wikipedia
Apache ActiveMQ adalah broker pesan open source yang ditulis di Java bersama dengan klien Java Message Service (JMS) penuh. Ini menyediakan "Fitur Perusahaan" yang dalam hal ini berarti membina komunikasi dari lebih dari satu klien atau server
Mengenai pertanyaan Anda:
Mengapa Anda tidak menggunakan database?
Anda harus menggunakan database untuk data persisten dan bukan untuk data sementara. Asumsikan bahwa Anda harus mengirim pesan dari Pengirim ke Penerima. Saat Menerima pesan, Penerima menjalankan satu operasi (menerima, memproses, dan melupakan). Setelah memproses pesan itu, Anda tidak membutuhkan pesan itu sama sekali. Dalam kasus ini, menyimpan pesan dalam database yang persisten bukanlah solusi yang tepat.
Saya sepenuhnya setuju dengan jawaban @Hiram Chirino tentang memasukkan & menghapus pesan dalam database jika Anda menggunakan database daripada sistem pesan.
Manfaat dari artikel ini dan artikel ini
Harus ada fitur ActiveMQ yang database tidak?
Ada banyak. Lihat halaman dokumentasi untuk lebih jelasnya. Lihat juga kasus penggunaan .
Lihat presentasi ini untuk memahami internal ActiveMQ.
Misalkan Anda memiliki aplikasi yang digunakan di beberapa lokasi pada waktu yang sama. Juga anggap aplikasi Anda harus menangani 1000 permintaan per menit atau sesuatu seperti itu sehingga operasi db normal tidak dapat menangani operasi seperti itu, Activemq bertindak sebagai pemrosesan pesan yang mengambil semua pesan ke dalam antrian, bahkan jika salah satu aplikasi Anda mogok di satu lokasi lokasi lain tidak akan terpengaruh.