Saya mencoba memahami apa itu JMS dan bagaimana terhubung ke terminologi AMQP. Saya tahu JMS adalah API dan AMQP adalah protokol.
Inilah asumsi saya (dan pertanyaan juga)
- RabbitMQ menggunakan protokol AMQP (lebih tepatnya mengimplementasikan protokol AMQP)
- Klien Java perlu menggunakan perpustakaan klien protokol AMQP untuk menghubungkan / menggunakan RabbitMQ
- Di mana JMS API berperan di sini? JMS API harus menggunakan pustaka klien AMQP untuk terhubung ke RabbitMQ?
- Biasanya kita menggunakan JMS untuk menghubungkan broker pesan seperti RabbitMQ, ActiveMQ, dll. Lalu apa protokol default yang digunakan di sini daripada AMQP?
Beberapa hal di atas mungkin bodoh. :-) Tetapi mencoba membungkus kepala saya di sekitarnya.
Jawaban:
Pertanyaan Anda agak berantakan dan menyerupai pertanyaan sulit di kertas pertanyaan :) (Karena guru selalu mencoba untuk mengajukan pertanyaan sederhana yang kompleks: DI harap Anda bukan seorang guru :)) Mari kita lihat semua ini satu per satu.
Seperti yang Anda ketahui:
API Java Message Service (JMS) adalah API Middleware (MOM) yang Berorientasi pada Pesan Java untuk mengirim pesan antara dua atau lebih klien . JMS adalah bagian dari Java Platform, Enterprise Edition, dan didefinisikan oleh spesifikasi yang dikembangkan di bawah Java Community Process sebagai JSR 914. Ini adalah standar pengiriman pesan yang memungkinkan komponen aplikasi berdasarkan Java Enterprise Edition (Java EE) untuk membuat, kirim, terima, dan baca pesan. Ini memungkinkan komunikasi antara berbagai komponen aplikasi terdistribusi secara longgar digabungkan, dapat diandalkan, dan tidak sinkron .
Sekarang (dari Wikipedia ):
Dan yang paling penting (lagi dari Wikipedia):
Beberapa hal penting yang harus Anda ketahui:
Semoga berhasil :)
sumber
I am not sure but I believe that AMQP also uses HTTP/S protocol but AMQP is enhacement is messaging protocol over HTTP
: Tidak. Itu tidak benar.JMS uses simple HTTP but for RabbitMQ/ActiveMq, they uses enhanced protocol.
: Tidak. Itu tidak benar. JMS hanya spesifikasi API. Itu tidak menggunakan protokol apa pun. Penyedia JMS (seperti ActiveMQ) dapat menggunakan protokol yang mendasari untuk mewujudkan JMS API. Sebagai contoh: Apache ActiveMQ dapat menggunakan protokol berikut: AMQP, MQTT, OpenWire, REST (HTTP), RSS dan Atom, Stomp, WSIF, WS Notification, XMPP.Mari kita mulai dari basis.
RabbitMQ adalah MOM (Message Oriented Middleware), dikembangkan dengan Erlang (bahasa pemrograman berorientasi TLC) dan mengimplementasikan protokol kawat AMQP (Advance Message Queuing Protocol). Saat ini, banyak API Klien (mis. Java, C ++, RESTful, dll.) Tersedia untuk memungkinkan penggunaan layanan pengiriman pesan RabbitMQ.
JMS (Java Messaging Service) adalah standar JCP yang mendefinisikan seperangkat API terstruktur untuk diimplementasikan oleh seorang MOM. Contoh MOM yang mengimplementasikan (yaitu kompatibel dengan) JMS API adalah ActiveMQ; ada juga HornetMQ, dan lainnya. Perangkat middlare semacam itu mendapatkan API JMS dan menerapkan pola pertukaran yang sesuai.
Menurut di atas, dengan mengambil kerangka JMS API, sebuah instance dari RabbitMQ dan Java Client APIsnya, adalah mungkin untuk mengembangkan implementasi JMS menggunakan RabbitMQ: satu-satunya hal yang harus dilakukan seseorang, pada saat itu, adalah menerapkan pola pertukaran (lebih dari RabbitMQ) sesuai dengan spesifikasi JMS.
Kuncinya adalah: satu set API, seperti JMS, dapat diimplementasikan terlepas dari teknologi (dalam hal ini, RabbitMQ).
sumber
JMS, ketika didefinisikan tidak mendefinisikan protokol antara klien JMS dan server pengiriman pesan. Klien JMS, yang mengimplementasikan API JMS dapat menggunakan protokol apa pun untuk berkomunikasi dengan server pengiriman pesan. Klien hanya perlu mematuhi JMS api. Itu saja. Biasanya klien JMS menggunakan protokol khusus yang dimengerti oleh server pesan mereka.
AMQP di sisi lain adalah protokol antara klien pengiriman pesan dan server pengiriman pesan. Klien JMS dapat menggunakan AMQP sebagai protokol untuk berkomunikasi dengan server pengiriman pesan. Dan ada klien seperti itu tersedia.
http://www.lshift.net/blog/2009/03/16/openamqs-jms-client-with-rabbitmq-server
sumber
JMS adalah API, sehingga beberapa API JMS diimplementasikan melalui protokol AMQP (seperti Apache QPID JMS ) sementara sebagian besar API JMS menggunakan protokol lain. Jika versi protokol AMQP adalah sama, klien tersebut harus dapat berkomunikasi dengan klien AMQP lainnya.
Itu tergantung pada konfigurasi JMS API Anda. Untuk ActiveMQ, bisa saja AMQP tetapi secara default adalah 'openwire'
sumber
Saya ingin menyarankan sebuah makalah, banyak membantu saya untuk memahami lebih baik apa perbedaan antara AMQP dan JMS.
Berikut tautan ke makalah: http://www.wmrichards.com/amqp.pdf
sumber
https://spring.io/understanding/AMQP
sumber
Saya menduga Anda mungkin mencari dokumentasi ini yang mengatakan, sebagian:
sumber