ApsaraMQ for RocketMQ adalah middleware perpesanan terdistribusi berbasis model publish-subscribe. Layanan ini menguraikan keterkaitan antara produsen dan konsumen melalui pengiriman pesan secara asinkron, sehingga cocok untuk penguraian keterkaitan asinkron dan penggeseran beban puncak dalam arsitektur terdistribusi.
Jika kasus penggunaan Anda memerlukan respons real-time melalui tautan sinkron, gunakan solusi Remote Procedure Call (RPC) sebagai gantinya. Pilih produk berdasarkan skenario bisnis dan kebutuhan utama Anda.
Alur pesan dalam sistem
Setiap pesan melewati tiga tahap: produksi, penyimpanan, dan konsumsi.

Seorang producer membuat pesan dan mengirimkannya ke server ApsaraMQ for RocketMQ.
Server menyimpan pesan tersebut dalam sebuah topic. Di dalam topic tersebut, pesan ditambahkan ke sebuah queue secara berurutan.
Seorang consumer, yang termasuk dalam sebuah consumer group, berlangganan ke topic tersebut dan memproses pesan tersebut.
Konsep utama
Produksi
Producer: Entitas waktu proses ringan dan anonim yang membuat serta mengirimkan pesan. Producer biasanya diintegrasikan ke hulu rantai panggilan bisnis.
Penyimpanan
Topic: Kontainer logis untuk transmisi dan penyimpanan pesan. Setiap topic berisi beberapa queue yang mendukung skalabilitas horizontal.
Lite topic (LiteTopic): Resource sekunder di bawah topic bertipe Lite. Setiap lite topic secara default berisi satu queue.
Queue (MessageQueue): Unit dasar penyimpanan dan transmisi pesan, mirip dengan partisi di Kafka. Setiap queue menggunakan struktur antrian tak hingga berbasis aliran, di mana pesan disimpan secara berurutan.
Message: Unit terkecil dalam transmisi data. Pesan bersifat immutable setelah diinisialisasi, dikirim, dan disimpan.
Konsumsi
Consumer group (ConsumerGroup): Pengelompokan logis yang mengelola beberapa consumer. Consumer group bersifat independen satu sama lain: setiap group menerima dan mengonsumsi seluruh set pesan dari topic yang dilanggannya, sehingga group tidak pernah bersaing atau berbagi pesan yang sama. Semua consumer dalam satu group menggunakan logika dan konfigurasi konsumsi yang sama, serta bekerja sama untuk memproses pesan dari topic yang dilanggani. Hal ini memungkinkan skalabilitas horizontal kapasitas konsumsi.
Consumer: Entitas waktu proses yang menerima dan memproses pesan. Consumer biasanya diintegrasikan ke hilir rantai panggilan bisnis. Setiap consumer harus termasuk dalam satu consumer group tertentu.
Subscription: Sekumpulan aturan pada tingkat consumer group yang mengatur penyaringan pesan, perilaku pengulangan, dan pemulihan progres konsumsi. Subscription bersifat persisten—tetap ada meskipun server dimulai ulang atau klien terputus. Pengecualian berlaku untuk ekspresi filter, yang tidak dipertahankan.
Komunikasi sinkron vs. asinkron
Layanan terdistribusi berkomunikasi melalui dua pola utama: RPC sinkron dan perpesanan asinkron. ApsaraMQ for RocketMQ menggunakan perpesanan asinkron.
RPC sinkron

Dalam model RPC sinkron, pemanggil mengirim permintaan langsung ke penerima, dan penerima segera mengembalikan respons.
"Sinkron" di sini merujuk pada model komunikasi, bukan API pemrograman. Panggilan RPC dapat menggunakan gaya pemrograman asinkron non-blocking, tetapi modelnya tetap memerlukan respons langsung dari titik akhir target dalam periode tertentu.
Perpesanan asinkron

Dalam model asinkron, pemanggil mengubah permintaan menjadi pesan dan mengirimkannya ke middleware perpesanan. Pemanggilan selesai begitu pesan berhasil dikirim. Middleware kemudian mengirimkan pesan tersebut secara andal ke layanan hilir dan memastikan tugas terkait dieksekusi.
Manfaat | Cara kerjanya |
Topologi berbentuk bintang | Layanan hulu dan hilir hanya terhubung ke middleware, sehingga menghasilkan topologi yang sederhana dan mudah dikelola. |
Layanan longgar terikat | Layanan hulu dan hilir dapat ditingkatkan dan dimodifikasi secara independen. Middleware menangani buffering dan pemulihan asinkron. |
Penggeseran beban puncak | Middleware umumnya memiliki kemampuan buffering dan shaping traffic yang kuat, sehingga mencegah lonjakan beban membebani layanan hilir. |
Perpesanan point-to-point vs. publish-subscribe
Middleware perpesanan menggunakan salah satu dari dua model pengiriman. ApsaraMQ for RocketMQ menggunakan model publish-subscribe.
Fitur | Point-to-point | Publish-subscribe |
Identitas konsumen | Anonim — konsumen berbagi satu queue tanpa identitas independen | Independen — setiap consumer group memiliki identitas sendiri |
Pola pengiriman | Satu-ke-satu — konsumen bersaing untuk pesan, dan setiap pesan diproses oleh tepat satu konsumen | Satu-ke-banyak — setiap consumer group menerima salinan setiap pesan |
Skalabilitas | Lebih sederhana untuk diimplementasikan | Lebih ekstensibel — mendukung banyak konsumen hilir independen |
Model point-to-point

Dalam model point-to-point (juga disebut perpesanan berbasis queue), queue merupakan satu-satunya identifikasi komunikasi antara hulu dan hilir. Banyak konsumen bersaing untuk pesan dalam queue tersebut, dan setiap pesan hanya diproses oleh satu konsumen.
Model publish-subscribe

Dalam model publish-subscribe, setiap consumer group memiliki identitas independen. Pesan dalam topic yang sama dapat dikirimkan ke beberapa consumer group, dan setiap group menerima salinan lengkap semua pesan. Consumer group yang berbeda tidak saling memengaruhi satu sama lain.