Pengantar protokol AMQP
AMQP (Advanced Message Queuing Protocol) adalah protokol standar lapisan aplikasi yang menyediakan layanan pesan terpadu, dan merupakan standar terbuka untuk protokol lapisan aplikasi yang dirancang untuk middleware berorientasi pesan. AMQP adalah protokol jaringan untuk meneruskan pesan asinkron antar proses.
Klien dan middleware pesan berdasarkan protokol ini dapat mengirimkan pesan tanpa dibatasi oleh produk klien/middleware yang berbeda, bahasa pengembangan yang berbeda, dll.
Karakteristik utama AMQP adalah berorientasi pesan, antrian, perutean (termasuk peer-to-peer dan publikasi/langganan), keandalan, dan keamanan. AMQP menegakkan perilaku penyedia pesan dan klien, memungkinkan interoperabilitas sejati antara vendor yang berbeda.
Merutekan pesan
Dalam arsitektur AMQP, perutean pesan yang berhasil terdiri dari tiga bagian:
- Pertukaran: Tempat produsen menerbitkan pesan
- Antrean: Tempat konsumen menerima pesan
- Pengikatan: Cara pesan dirutekan dari sakelar ke antrean tertentu
Pertukaran dan Pengikatan
Jadi bagaimana pesan mencapai antrean? Setiap kali Anda ingin mengirimkan pesan ke konsumen, Anda harus mengirimkannya terlebih dahulu ke penukar. Kemudian, berdasarkan aturan atau kunci perutean tertentu, RabbitMQ akan memutuskan antrean mana yang harus dikirimkan pesan.
Aturan - atau kunci perutean - memungkinkan Anda untuk mengikat antrean ke bursa. RabbitMQ akan mencoba mencocokkan kunci perutean dalam pesan dengan kunci yang digunakan dalam pengikatan. Pesan kemudian dikirimkan ke antrean berdasarkan salah satu dari empat jenis pertukaran: fanout, topic, direct, header
Pertukaran Fanout
Jenis pertukaran ini menyiarkan semua pesan yang diterimanya ke semua antrean yang terikat padanya. Setiap kunci perutean yang disediakan dengan pesan yang diterbitkan akan diabaikan.
Pertukaran Topik
Dalam jenis pertukaran ini, pesan dikirim ke antrean berdasarkan kunci perutean. Ini berarti bahwa pesan yang dikirim ke bursa topik harus memiliki kunci perutean tertentu, yang harus berupa daftar kata, dipisahkan oleh titik (misalnya, 'acs.deviceoperations.'). Batas kata-kata adalah 255 byte.
Kunci pengikatan harus dalam format yang sama dengan kunci perutean. Oleh karena itu, pesan yang dikirim dengan kunci perutean tertentu akan dikirimkan ke setiap antrean yang terikat dengan kunci pengikatan yang cocok.
Kunci pengikatan memungkinkan aturan ekspresi berikut:
*(tanda bintang) hanya dapat mengganti satu kata # (hash) dapat menggantikan nol atau lebih kata Ketika antrean terikat dengan kunci pengikat "#" (hash), antrian akan menerima semua pesan terlepas dari kunci perutean, seperti dalam pertukaran fan-out Fanout.
Pertukaran Langsung
Ketika antrean dideklarasikan, itu akanSecara otomatis mengikat ke sakelar yang menggunakan nama antrean sebagai kunci perutean。 Jika kunci perutean cocok, pesan akan dikirimkan ke antrean yang sesuai.
Pertukaran Header
Sakelar header agak mirip dengan sakelar topik, tetapi tidak seperti sakelar topik, perutean didasarkan pada kunci rute, dan nilai perutean sakelar header didasarkan pada data header pesan. Kunci perutean sakelar topik hanya string, sedangkan sakelar header dapat berupa bilangan bulat dan hash.
(Akhir)
|