RabbitMQ adalah middleware pesan terdistribusi yang dikembangkan dalam bahasa Erlang dan bersifat open source. RabbitMQ mendukung Protocol Antrean Pesan Lanjutan (AMQP) dan pustaka klien dalam berbagai bahasa pemrograman seperti Java, Golang, PHP, dan Python.
Fitur
- Keandalan: Menjamin keandalan melalui persistensi pesan, dukungan transaksi, pengakuan konsumen dan transmisi, dll.
- Mekanisme Routing: Mendukung model langganan dan konsumsi utama seperti siaran, langganan, pencocokan header, dll.
- Skalabilitas: Beberapa node RabbitMQ dapat membentuk sebuah cluster dan secara dinamis memperluas cluster sesuai dengan kebutuhan bisnis aktual.
- Ketersediaan Tinggi: Antrean dapat diatur sebagai cerminan pada mesin dalam cluster, membuat antrean tetap tersedia jika terjadi masalah dengan beberapa node.
- Protokol Berganda: Selain dukungan AMQP asli, RabbitMQ juga mendukung berbagai protokol middleware pesan seperti STOMP, MQTT, dll.
- Klien Multi-bahasa: RabbitMQ mendukung hampir semua bahasa yang umum digunakan, seperti Java, Python, Ruby, PHP, C#, JavaScript, dll.
- Antarmuka Manajemen: RabbitMQ menyediakan antarmuka yang ramah pengguna untuk memantau dan mengelola pesan dan node cluster.
- Mekanisme Plugin: RabbitMQ menyediakan banyak plugin untuk ekstensi yang luas, dan pengguna juga dapat menulis plugin mereka sendiri.
Kasus Penggunaan Utama
Proses Asynchronous
Bagian non inti atau kurang penting dari proses bisnis dapat secara asinkron memberi tahu sistem target menggunakan notifikasi pesan, memungkinkan proses bisnis utama untuk segera merespons tanpa menunggu secara synchronously hasil dari sistem lain.
Dekupling Aplikasi
Ekspansi bisnis dapat dicapai berdasarkan mekanisme langganan pesan. Misalnya, dalam skenario pemesanan e-commerce, ketika pengguna melakukan pemesanan, pesan pemesanan dihasilkan. Modul gudang dapat berlangganan pesan pemesanan untuk pengiriman, modul poin dapat berlangganan pesan pemesanan untuk menambahkan poin, dan modul SMS dapat berlangganan pesan pemesanan untuk mengirim pesan teks, dan seterusnya.
Peak Shaving
Karena mungkin ada perbedaan dalam kemampuan pemrosesan sistem hulu dan hilir, antrean pesan dapat bertindak sebagai pengatur untuk memungkinkan sistem hilir untuk menangani lalu lintas dengan kecepatan yang stabil.
Misalnya, dalam kasus berhasil membayar pesanan dan memberitahukan gudang untuk melakukan pengiriman, jika modul pesanan saat ini mendukung konkurensi tinggi hingga 1000 dan pengiriman gudang hanya mendukung 100, memperkenalkan antrean pesan dapat memungkinkan modul gudang untuk berlangganan pesan pesanan dan menangani pengiriman secara perlahan dalam antrean.
ps: Ini seperti antrean untuk naik kereta bawah tanah.