全部产品
Search
文档中心

ApsaraMQ for RocketMQ:Manajemen Kemajuan Konsumen

更新时间:Jul 06, 2025

ApsaraMQ for RocketMQ menggunakan offset konsumen untuk mengelola kemajuan konsumen. Topik ini menjelaskan mekanisme manajemen kemajuan konsumen ApsaraMQ for RocketMQ.

Informasi latar belakang

Dalam ApsaraMQ for RocketMQ, pesan dapat dihasilkan sebelum atau sesudah dikonsumsi oleh konsumen. Bagaimana konsumen mengetahui dari mana harus mulai mengonsumsi pesan, dan bagaimana pesan yang telah dikonsumsi ditandai? Untuk mengatasi tantangan ini, ApsaraMQ for RocketMQ mengembangkan mekanisme manajemen kemajuan konsumen.

Mekanisme manajemen kemajuan konsumen ApsaraMQ for RocketMQ memecahkan masalah berikut:

  • Di mana klien mulai mengonsumsi pesan setelah diluncurkan?

  • Bagaimana cara menandai pesan yang telah dikonsumsi untuk memastikan bahwa pesan tersebut tidak diproses berkali-kali?

  • Bisakah pesan dikonsumsi lagi oleh klien yang sama jika terjadi pengecualian layanan?

Mekanisme kerja

Offset

Dalam ApsaraMQ for RocketMQ, pesan disimpan dalam beberapa antrian dari topik tertentu dalam urutan kedatangan mereka di broker. Setiap pesan diberi koordinat unik bertipe Long, yang juga dikenal sebagai offset pesan.

Secara teoritis, antrian pesan dapat menyimpan jumlah pesan yang tak terbatas. Oleh karena itu, rentang nilai offset adalah dari 0 hingga Long.MAX_VALUE. Anda dapat menemukan pesan berdasarkan topik, antrian, dan offsetnya. Gambar berikut menunjukkan hubungan antara konsep-konsep ini.消息位点

Dalam ApsaraMQ for RocketMQ, offset pesan paling awal dalam antrian disebut offset minimum (MinOffset), dan offset pesan terbaru disebut offset maksimum (MaxOffset). Meskipun secara teori antrian pesan dapat menampung jumlah pesan yang tak terbatas, mesin fisik tempat mereka disimpan memiliki ruang yang terbatas. Oleh karena itu, ApsaraMQ for RocketMQ secara dinamis menghapus pesan paling awal dari antrian, dan nilai MinOffset dan MaxOffset antrian terus meningkat.消费位点更新

Offset konsumen

ApsaraMQ for RocketMQ mengikuti pola publikasi-langganan. Beberapa grup konsumen dapat berlangganan ke antrian yang sama. Dalam skenario seperti ini, ketika konsumen menghapus pesan setelah mengonsumsinya, konsumen lain tidak dapat mengonsumsi pesan tersebut.

Untuk mencegah hal ini terjadi, ApsaraMQ for RocketMQ menggunakan offset konsumen untuk mengelola kemajuan konsumsi pesan dari konsumen yang berbeda. ApsaraMQ for RocketMQ tidak langsung menghapus pesan setelah dikonsumsi. Sebaliknya, ApsaraMQ for RocketMQ mempertahankan catatan pesan terbaru yang dikonsumsi oleh grup konsumen, yang juga disebut offset konsumen.

Jika klien dimulai ulang, konsumen dapat melanjutkan pemrosesan pesan berdasarkan offset konsumen yang disimpan di broker. Jika offset konsumen kedaluwarsa dan dihapus, nilai MinOffset antrian yang disimpan di broker digunakan sebagai offset konsumen.

Catatan

Offset konsumen disimpan dan dipulihkan dari broker ApsaraMQ for RocketMQ dan tidak terkait dengan konsumen tertentu. Oleh karena itu, ApsaraMQ for RocketMQ dapat memulihkan kemajuan konsumen di berbagai konsumen.

Gambar berikut menunjukkan hubungan antara offset minimum, offset maksimum, dan offset konsumen dalam antrian pesan.消费进度

  • Offset konsumen selalu lebih kecil atau sama dengan offset maksimum.

    • Jika pesan diproduksi dan dikonsumsi pada laju yang sama dan tidak ada pesan yang belum dikonsumsi dalam antrian, offset konsumen sama dengan offset maksimum.

    • Jika pesan dikonsumsi lebih lambat daripada diproduksi, pesan yang belum dikonsumsi ada dalam antrian. Dalam kasus ini, offset konsumen lebih kecil dari offset maksimum, dan selisihnya adalah jumlah pesan yang belum dikonsumsi.

  • Secara umum, offset konsumen lebih besar atau sama dengan offset minimum. Jika offset konsumen lebih kecil dari offset minimum, konsumen tidak dapat mengonsumsi pesan. Dalam kasus ini, broker memulihkan offset konsumen yang benar untuk konsumen.

Offset konsumen awal

Offset konsumen awal adalah offset konsumen yang disimpan di broker ketika grup konsumen mulai mengonsumsi antrian pesan untuk pertama kalinya.

ApsaraMQ for RocketMQ menggunakan offset maksimum dari antrian pesan ketika konsumen mendapatkan pesan dari antrian untuk pertama kalinya sebagai offset konsumen awal. Dengan kata lain, konsumen memulai konsumsi dari pesan terbaru dalam antrian.

Setel ulang offset konsumen

Jika offset konsumen awal atau saat ini tidak sesuai dengan status bisnis Anda, Anda dapat menyetel ulang offset konsumen untuk menyesuaikan kemajuan konsumen Anda.

Skenario

  • Offset konsumen awal yang tidak tepat: Offset konsumen awal adalah offset maksimum dari antrian, dan klien memulai konsumsi dari pesan terbaru. Jika Anda perlu mengonsumsi pesan yang lebih awal, Anda dapat menyetel ulang offset konsumen ke offset pesan yang lebih awal.

  • Keterlambatan konsumen: Sejumlah besar pesan dapat menumpuk jika konsumen tidak dapat mengimbangi kecepatan produksi pesan. Jika pesan yang menumpuk tidak penting untuk misi, Anda dapat menyetel offset konsumen ke nilai yang lebih besar untuk melewati pesan-pesan ini dan mengurangi beban hilir.

  • Pelacakan balik bisnis dan pemrosesan korektif: Jika Anda ingin mengonsumsi ulang pesan yang telah dikonsumsi secara salah karena kesalahan bisnis, Anda dapat menyetel offset konsumen ke nilai yang lebih kecil.

Fitur pengaturan ulang offset konsumen

Fitur pengaturan ulang offset konsumen ApsaraMQ for RocketMQ menyediakan kemampuan berikut:

  • Setel ulang offset konsumen ke offset terbaru

    Konsumen dalam grup konsumen yang ditentukan melewati semua pesan yang menumpuk dalam topik yang ditentukan dan mulai mengonsumsi dari offset terbaru.

  • Setel ulang offset konsumen ke titik waktu tertentu

    • Konsumen mulai mengonsumsi dari pesan yang sesuai dengan titik waktu reset, terlepas dari apakah pesan tersebut sudah dikonsumsi.

    • Anda dapat menentukan titik waktu dalam rentang waktu dari titik waktu ketika pesan pertama dikirim ke topik hingga titik waktu ketika pesan terbaru dikirim ke topik.

    • Jika Anda menyetel ulang offset konsumen ke titik waktu tertentu, broker menyesuaikan offset konsumen ke offset yang paling dekat dengan titik waktu tersebut.

Metode pengaturan

  • Operasi Konsol:

    1. Masuk ke Konsol ApsaraMQ for RocketMQ. Di panel navigasi kiri, pilih Instances.

    2. Di halaman Instances, pilih instance yang ingin Anda kelola. Di panel navigasi kiri halaman Instance Details yang muncul, klik Groups.

    3. Di halaman Groups, klik grup yang ingin Anda kelola. Di halaman Group Details yang muncul, atur ulang offset konsumen.

  • Operasi API: ResetConsumeOffset

Batasan

  • Setelah Anda menyetel ulang offset konsumen, konsumen mulai mengonsumsi pesan dari offset baru. Dalam skenario pelacakan balik, konsumen mulai dengan pesan historis yang sebagian besar merupakan data dingin. Ini disebut pembacaan dingin dan dapat menyebabkan beban berlebih pada sistem Anda. Evaluasi risiko dan manfaat sebelum Anda menyetel ulang offset konsumen. Kami menyarankan Anda untuk menerapkan kebijakan kontrol yang ketat untuk izin ini untuk mencegah penyalahgunaan dan pengaturan ulang yang sering.

  • ApsaraMQ for RocketMQ hanya memungkinkan Anda menyetel ulang offset konsumen untuk pesan yang terlihat. Anda tidak dapat menyetel ulang offset untuk pesan yang berada dalam status penjadwalan atau menunggu percobaan ulang. Untuk informasi lebih lanjut, lihat Pesan Terjadwal dan Tertunda dan Percobaan Konsumsi Ulang.

Kompatibilitas versi

Broker memiliki definisi yang berbeda untuk offset konsumen awal di berbagai versi ApsaraMQ for RocketMQ:

  • Dalam versi 4.x dan 3.x, offset konsumen awal didefinisikan sebagai status pesan dari antrian.

  • Dalam versi 5.x, offset konsumen awal adalah offset maksimum dari antrian pada saat konsumen mulai menerima pesan.

Oleh karena itu, jika Anda melakukan upgrade dari versi sebelumnya, Anda harus memperhatikan offset konsumen awal saat meluncurkan klien Anda.

Catatan penggunaan

Kontrol ketat izin pengaturan ulang

Menyetel ulang offset konsumen menimbulkan beban tambahan pada sistem dan dapat memengaruhi pembacaan dan penulisan pesan. Oleh karena itu, kami menyarankan Anda untuk mengevaluasi risiko dan manfaat sebelum melakukan operasi ini.