全部产品
Search
文档中心

ApsaraMQ for RocketMQ:Konsumen

更新时间:Mar 11, 2026

Konsumen adalah aplikasi klien yang berlangganan ke topik dan memproses pesan dari ApsaraMQ for RocketMQ. Konsumen terhubung ke broker, mengambil pesan berdasarkan langganan mereka, lalu meneruskannya ke logika bisnis Anda untuk diproses.

Tiga faktor menentukan perilaku konsumen:

  • Consumer group: Setiap konsumen harus termasuk dalam consumer group. Grup tersebut menetapkan pengaturan perilaku bersama—seperti urutan pengiriman dan kebijakan retry—serta melacak progres konsumsi di antara anggotanya.

  • Jenis konsumen: Pilih antara push consumer (pengiriman yang dikendalikan broker) dan simple consumer (pull yang dikendalikan aplikasi). Lihat Jenis konsumen.

  • Pengaturan sisi klien: Jumlah thread, konkurensi, dan konfigurasi lokal lainnya mengontrol cara konsumen memproses pesan pada host aplikasi Anda.

Cara kerja

Diagram berikut menunjukkan posisi konsumen dalam model domain ApsaraMQ for RocketMQ.

Consumers in the domain model
  1. Producer mengirim pesan ke broker ApsaraMQ for RocketMQ.

  2. Broker menyimpan setiap pesan dalam antrian yang ditentukan oleh topik tujuan, mempertahankan urutan kedatangan.

  3. Konsumen mengambil dan memproses pesan dari broker berdasarkan langganan mereka.

Konsumen dalam consumer group yang sama berbagi seluruh kumpulan pesan yang dikirimkan ke grup tersebut.

Atribut internal

Nama consumer group (wajib)
  • Nama consumer group tempat konsumen ini tergabung. Konsumen mewarisi urutan pengiriman dan kebijakan retry dari consumer group-nya.
  • Consumer group merupakan sumber daya logis. Buat melalui Konsol atau API sebelum digunakan. Untuk aturan penamaan dan batasan lainnya, lihat Batas penggunaan.
Client ID (dihasilkan otomatis)
  • Identifier unik untuk setiap instans klien konsumen dalam kluster. SDK ApsaraMQ for RocketMQ menghasilkan nilai ini secara otomatis. Client ID muncul dalam log dan berguna untuk troubleshooting, tetapi tidak dapat diubah.
Daftar langganan yang telah ditentukan sebelumnya (disarankan)
  • Daftar topik dan ekspresi filter yang dilanggani konsumen. Tentukan langganan saat inisialisasi konsumen agar broker dapat memvalidasi izin dan ketersediaan topik di muka, bukan setelah aplikasi mulai berjalan.
  • Jika tidak ada langganan yang ditentukan saat inisialisasi—atau jika topik yang dilanggani berubah saat runtime—ApsaraMQ for RocketMQ melakukan validasi dinamis, yang dapat menunda deteksi error.
Message listener (hanya untuk push consumer)
  • Antarmuka callback yang dipanggil broker untuk mengirimkan pesan ke push consumer. Konfigurasikan message listener pada klien konsumen.
  • Simple consumer mengambil pesan secara eksplisit dan tidak menggunakan listener. Untuk informasi lebih lanjut, lihat Jenis konsumen.

Batasan perilaku

Semua konsumen dalam consumer group yang sama harus memiliki pengaturan identik untuk:

PengaturanDeskripsi
Urutan pengiriman pesanMenentukan apakah pesan dikirim secara berurutan atau konkuren
Kebijakan retry konsumsiMenentukan cara pesan yang gagal diproses akan diulang

Pengaturan yang tidak konsisten di antara konsumen dalam grup yang sama mengakibatkan perilaku pengiriman yang tidak dapat diprediksi. Cara penerapan pengaturan ini bergantung pada versi broker. Lihat bagian berikutnya untuk detailnya.

Kompatibilitas versi

PerilakuBroker 5.xBroker 3.x / 4.x
Lokasi definisi urutan pengiriman dan kebijakan retryPada consumer group (sisi server)Pada setiap klien konsumen (API sisi klien)
Tanggung jawab pengembangTidak perlu konfigurasi sisi klien—konsumen mewarisi pengaturan dari grupAtur urutan pengiriman dan kebijakan retry pada setiap klien konsumen untuk memastikan konsistensi di seluruh grup

Jika Anda menggunakan versi SDK lama untuk terhubung ke broker 5.x, konsumen tetap membaca urutan pengiriman dan kebijakan retry dari konfigurasi API sisi klien, bukan dari consumer group.

Praktik terbaik

Inisialisasi satu konsumen per grup per proses

Konsumen ApsaraMQ for RocketMQ menggunakan protokol non-blocking yang mendukung akses multi-threaded secara konkuren. Satu instans konsumen dapat menangani throughput tinggi. Dalam kebanyakan kasus, inisialisasi satu konsumen per consumer group dalam setiap proses. Membuat beberapa instans konsumen dengan konfigurasi yang sama dalam satu proses hanya membuang sumber daya tanpa meningkatkan performa.

Gunakan ulang konsumen alih-alih membuat dan menghapusnya berulang kali

Perlakukan instans konsumen seperti kolam koneksi database—buat sekali dan gunakan ulang sepanjang siklus hidup aplikasi. Membuat konsumen baru untuk setiap batch pesan lalu menghapusnya setelahnya menghasilkan koneksi singkat berlebihan pada broker, sehingga meningkatkan beban sistem secara tidak perlu.

Benar — buat sekali, konsumsi dalam loop, matikan saat keluar:

Consumer c = ConsumerBuilder.build();
for (int i = 0; i < n; i++) {
    Message m = c.receive();
    // proses pesan
}
c.shutdown();

Salah — buat dan hapus di dalam loop:

for (int i = 0; i < n; i++) {
    Consumer c = ConsumerBuilder.build();
    Message m = c.receive();
    // proses pesan
    c.shutdown();
}

Langkah selanjutnya

  • Consumer group: Pelajari cara consumer group mengelola pengaturan pengiriman bersama dan melacak progres konsumsi.

  • Jenis konsumen: Bandingkan push consumer dan simple consumer untuk menentukan mana yang sesuai dengan kasus penggunaan Anda.

  • Batas penggunaan: Periksa aturan penamaan, kuota, dan batasan lainnya untuk consumer group.