全部产品
Search
文档中心

ApsaraMQ for RocketMQ:Konsumsi klustering dan konsumsi siaran

更新时间:Jul 02, 2025

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.

图片2.png

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.

图片3.png

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.

  • Keandalan layanan lebih tinggi dalam mode konsumsi klustering daripada dalam mode konsumsi siaran. Setelah konsumen di-restart, konsumen melanjutkan konsumsi pesan berdasarkan progres konsumsi terakhir.

  • Percobaan ulang pesan didukung oleh broker ApsaraMQ for RocketMQ. Untuk informasi lebih lanjut, lihat Percobaan ulang pesan.

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.