ApsaraMQ for RocketMQ mendukung konsumsi klustering dan konsumsi siaran. Anda dapat menentukan mode konsumsi konsumen dalam kluster ke klustering atau siaran di klien untuk menentukan apakah pesan dikonsumsi hanya oleh satu konsumen atau semua konsumen dalam kluster.
Informasi latar belakang
ApsaraMQ for RocketMQ adalah sistem perpesanan berbasis pola Publikasi-Langganan. Di ApsaraMQ for RocketMQ, konsumen berlangganan topik untuk memperoleh dan mengonsumsi pesan.
Beberapa konsumen yang diidentifikasi dengan ID grup yang sama termasuk dalam kluster konsumen yang sama dan harus menggunakan logika konsumsi serta tag yang sama. Untuk informasi lebih lanjut, lihat Konsistensi Langganan.
Konsumsi klustering
Konsep dasar
Dalam mode konsumsi klustering, beberapa konsumen dalam grup mengonsumsi pesan dari topik tertentu. ApsaraMQ for RocketMQ mengirimkan pesan ke konsumen yang berbeda, dan setiap pesan dikonsumsi hanya oleh satu konsumen.

Skenario
Pemerataan Beban Pesan: Jika sejumlah besar pesan diproses dalam bisnis Anda, Anda dapat menggunakan mode konsumsi klustering untuk mendistribusikan pesan ke beberapa konsumen guna menerapkan pemerataan beban. Dengan cara ini, setiap konsumen hanya memproses sejumlah kecil pesan, meningkatkan efisiensi dan throughput pemrosesan pesan.
Pemrosesan Data Terdistribusi: Untuk skenario di mana sejumlah besar data perlu diproses, Anda dapat menggunakan mode konsumsi klustering untuk mendistribusikan data ke beberapa node. Dengan cara ini, setiap node hanya memproses sejumlah kecil data, meningkatkan laju pemrosesan.
Catatan penggunaan
Dalam mode konsumsi klustering, pesan gagal tidak selalu dikirim ulang ke mesin yang sama.
Pastikan Anda menentukan mode konsumsi yang sama untuk konsumen dalam grup yang sama. Jika Anda menentukan mode konsumsi yang berbeda untuk konsumen dalam grup yang sama, mode konsumsi siaran akan berlaku.
Sebagai contoh, jika Anda membuat grup yang terdiri dari lima konsumen dan menentukan mode konsumsi klustering untuk dua konsumen serta mode konsumsi siaran untuk tiga konsumen lainnya, mode konsumsi siaran digunakan untuk semua lima konsumen.
Konsumsi siaran
Konsep dasar
Dalam mode konsumsi siaran, ketika beberapa konsumen dalam grup mengonsumsi pesan dalam topik tertentu, ApsaraMQ for RocketMQ mengirimkan setiap pesan ke semua konsumen dalam kluster. Ini memastikan bahwa setiap pesan dikonsumsi oleh setiap konsumen setidaknya sekali.
Mode ini cocok untuk skenario di mana beberapa konsumen secara bersamaan memproses kelompok pesan yang sama, seperti pemrosesan pesanan.

Skenario
Notifikasi dan Pengumuman: Ketika pengumuman atau notifikasi penting dirilis, sistem dapat menggunakan mode konsumsi siaran untuk mengirim notifikasi atau pengumuman kepada semua pengguna yang berlangganan pesan tersebut. Ini memastikan bahwa setiap pengguna menerima notifikasi atau pengumuman secara tepat waktu.
Sinkronisasi Data Real-Time: Dalam beberapa kasus, Anda ingin menyinkronkan data tertentu dalam sistem terdistribusi secara real-time untuk menjaga konsistensi data di antara beberapa node. Anda dapat menggunakan mode konsumsi siaran untuk mengirim pemberitahuan tentang perubahan data ke semua node tempat Anda ingin menyinkronkan perubahan data tersebut. Dengan cara ini, data pada setiap node tetap konsisten.
Catatan penggunaan
Dalam mode konsumsi siaran, ApsaraMQ for RocketMQ memastikan bahwa pesan dikonsumsi oleh konsumen setidaknya sekali, tetapi tidak mengirim ulang pesan yang gagal dikonsumsi. Anda perlu menangani kegagalan konsumsi secara manual.
Dalam mode konsumsi siaran, konsumen memulai konsumsi pesan dari pesan terbaru setiap kali konsumen di-restart. Konsumen secara otomatis melewati pesan-pesan yang dikirim ke broker ApsaraMQ for RocketMQ saat konsumen dihentikan. Berhati-hatilah saat menggunakan mode ini.
Dalam mode konsumsi siaran, setiap pesan diproses berulang kali oleh sejumlah besar konsumen. Kami merekomendasikan agar Anda menggunakan mode konsumsi klustering dalam kebanyakan kasus.
Pastikan Anda menentukan mode konsumsi yang sama untuk konsumen dalam grup yang sama. Jika Anda menentukan mode konsumsi yang berbeda untuk konsumen dalam grup yang sama, mode konsumsi siaran akan berlaku.
Sebagai contoh, jika Anda membuat grup yang terdiri dari lima konsumen dan menentukan mode konsumsi klustering untuk dua konsumen serta mode konsumsi siaran untuk tiga konsumen lainnya, mode konsumsi siaran digunakan untuk semua lima konsumen.
Perbedaan antara konsumsi klustering dan konsumsi siaran
Ketersediaan fitur bervariasi berdasarkan mode konsumsi. Tabel berikut mencantumkan fitur yang tersedia dalam mode konsumsi klustering dan fitur yang tersedia dalam mode konsumsi siaran.
Fitur | Mode konsumsi klustering | Mode konsumsi siaran |
SDK klien TCP |
|
|
SDK klien HTTP |
|
|
Pesan terurut |
|
|
Reset offset konsumen |
|
|
Percobaan ulang pesan |
|
|
Pencarian dan peringatan pesan terakumulasi |
|
|
Pencarian langganan |
|
|
Progres konsumen | Dikelola di broker ApsaraMQ for RocketMQ.
| Dikelola di klien. Probabilitas pesan dikonsumsi berulang kali dalam mode konsumsi siaran lebih tinggi daripada dalam mode konsumsi klustering. Setiap kali konsumen di-restart, konsumen memulai konsumsi dari pesan terbaru. |
Mengonfigurasi mode konsumsi klustering dan mode konsumsi siaran
ApsaraMQ for RocketMQ memungkinkan Anda mengubah mode konsumsi di klien. Untuk mengubah mode konsumsi, Anda harus mengonfigurasi parameter yang sesuai dalam kode SDK yang berlangganan pesan. Jika Anda tidak mengonfigurasi parameter, mode konsumsi klustering digunakan.
SDK klien TCP
Contoh kode untuk SDK untuk Java
Konsumsi Klustering
// Setel parameter MessageModel ke CLUSTERING. Jika Anda tidak mengonfigurasi parameter ini, mode konsumsi klustering digunakan secara otomatis. properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING);Konsumsi Siaran
// Setel parameter MessageModel ke BROADCASTING. properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING);
Contoh kode untuk SDK untuk C atau C++
Konsumsi Klustering
// Setel parameter MessageModel ke CLUSTERING. Jika Anda tidak mengonfigurasi parameter ini, mode konsumsi klustering digunakan secara otomatis. factoryInfo.setFactoryProperty(ONSFactoryProperty:: MessageModel, ONSFactoryProperty::CLUSTERING);Konsumsi Siaran
// Setel parameter MessageModel ke BROADCASTING. factoryInfo.setFactoryProperty(ONSFactoryProperty:: MessageModel, ONSFactoryProperty::BROADCASTING);
Contoh kode untuk SDK untuk .NET
Konsumsi Klustering
// Setel parameter MessageModel ke CLUSTERING. Jika Anda tidak mengonfigurasi parameter ini, mode konsumsi kluster digunakan secara otomatis. factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.CLUSTERING);Konsumsi Siaran
// Setel parameter MessageModel ke BROADCASTING. factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.BROADCASTING);
SDK klien HTTP
Secara default, SDK klien HTTP mendukung mode konsumsi klustering. Anda tidak perlu mengonfigurasi parameter untuk menentukan mode konsumsi.
FAQ
Mengapa mode konsumsi klustering tidak berlaku setelah saya menentukannya?
Masalah ini mungkin terjadi karena salah satu alasan berikut:
Pesan yang Anda proses adalah pesan terurut. Pesan terurut hanya mendukung konsumsi klustering.
SDK yang Anda gunakan adalah tipe klien HTTP. Klien HTTP hanya mendukung konsumsi klustering.
Bisakah saya menentukan mode konsumsi yang berbeda untuk konsumen yang berbeda dalam grup?
Tidak, Anda tidak dapat menentukan mode konsumsi yang berbeda untuk konsumen yang berbeda dalam grup.
Pastikan Anda menentukan mode konsumsi yang sama untuk konsumen dalam grup yang sama. Jika Anda menentukan mode konsumsi yang berbeda untuk konsumen dalam grup yang sama, mode konsumsi siaran akan berlaku.
Referensi
Untuk informasi tentang kode contoh lengkap untuk perpesanan, lihat Ikhtisar.