Mengatur ulang offset konsumen mengubah posisi konsumsi saat ini dari sebuah subscriber. Jika konsumen gagal atau memproses data yang salah, Anda dapat mengatur ulang offset konsumen untuk kembali ke posisi sebelumnya dan memulai ulang konsumsi. Alternatifnya, Anda dapat memindahkan posisi konsumsi ke offset terbaru guna sementara melewati pesan-pesan yang terakumulasi.
Informasi latar belakang
ApsaraMQ for RocketMQ menggunakan offset konsumen untuk mengelola progres konsumsi pesan. Setelah konsumen memproses sebuah pesan, pesan tersebut tidak langsung dihapus dari antrian. ApsaraMQ for RocketMQ menyimpan catatan konsumsi untuk setiap kelompok. Catatan ini, yang dikenal sebagai offset konsumen, menentukan offset dari pesan terbaru yang telah dikonsumsi oleh konsumen dalam kelompok tersebut untuk topik tertentu.
Ketika klien konsumen offline lalu kembali online, ia melanjutkan pemrosesan pesan berdasarkan progres konsumsi yang disimpan di sisi server.
Jika konsumsi tidak normal atau offset konsumen saat ini salah, Anda dapat menyesuaikan progres konsumsi dengan mengatur ulang offset konsumen.
ApsaraMQ for RocketMQ mendukung pengaturan ulang offset konsumen dengan cara berikut:
Start Consumption from Latest Offset
Konsumen yang memproses pesan dalam topik tertentu melewati semua pesan yang terakumulasi dan memulai konsumsi dari pesan terbaru yang dikirim setelah operasi pengaturan ulang.
Start Consumption from Offset Corresponding to Specified Point in Time
Konsumen memproses pesan mulai dari offset konsumen yang sesuai dengan waktu yang ditentukan, terlepas dari apakah pesan tersebut sebelumnya sudah dikonsumsi atau belum.
Rentang waktu yang dapat dipilih berada di antara waktu pembuatan pesan paling awal dan paling akhir yang tersimpan dalam topik tersebut.
Saat Anda mengatur ulang ke offset konsumen pada titik waktu tertentu, sisi server secara otomatis menemukan offset konsumen terdekat yang sesuai.
Skenario
Menghapus akumulasi pesan: Jika kinerja sistem konsumsi downstream tidak mencukupi atau kecepatan konsumsi lebih lambat daripada kecepatan produksi, banyak pesan dapat terakumulasi. Jika pesan-pesan yang terakumulasi tersebut dapat dibuang, Anda dapat mengatur ulang offset konsumen ke posisi tertentu. Hal ini memungkinkan Anda melewati pesan yang terakumulasi dan mengurangi beban pemrosesan pada sistem downstream.
Backtracking untuk pemrosesan korektif: Jika logika bisnis untuk konsumsi tidak normal dan pesan diproses secara salah, Anda mungkin perlu mengonsumsi ulang pesan-pesan tersebut. Untuk melakukannya, Anda dapat mengatur ulang offset konsumen ke posisi historis. Hal ini memungkinkan backtracking konsumsi.
Catatan penggunaan
Pengaturan ulang offset konsumen berlaku untuk offset konsumen dari kelompok tertentu pada topik target. Operasi ini tidak memengaruhi progres konsumsi kelompok lain yang berlangganan topik yang sama.
Pengaturan ulang offset konsumen tidak didukung dalam mode konsumsi broadcasting.
ApsaraMQ for RocketMQ hanya mendukung pengaturan ulang offset konsumen untuk kelompok yang menggunakan protokol TCP, bukan untuk kelompok yang menggunakan protokol HTTP.
Fitur pengaturan ulang offset konsumen hanya berlaku untuk pesan yang terlihat oleh konsumen. Fitur ini tidak dapat mengatur ulang pesan terjadwal atau pesan yang sedang menunggu retry.
Anda hanya dapat mengatur ulang offset konsumen ketika konsumen sedang online.
Prosedur
Masuk ke ApsaraMQ for RocketMQ console. Di panel navigasi kiri, klik Instances.
Di bilah navigasi atas, pilih wilayah, misalnya China (Hangzhou). Di halaman Instances, klik nama instans yang ingin Anda kelola.
Di panel navigasi kiri, klik Groups. Lalu, klik tab TCP.
Temukan ID kelompok yang ingin Anda atur ulang offset konsumennya. Di kolom Actions, klik More dan pilih Reset Consumer Offset dari menu drop-down.
Di panel Reset Consumer Offset, pilih topik target dan metode pengaturan ulang, lalu klik OK.
PeringatanJika Anda memilih Start Consumption from Latest Offset, semua pesan yang terakumulasi untuk ID kelompok tersebut pada topik yang ditentukan akan dihapus. Operasi ini berlaku dalam waktu sekitar 2 hingga 3 menit. Jangan mengulangi operasi ini. Selama periode tersebut, semua konsumen dalam aplikasi akan menjeda konsumsi selama 2 hingga 3 menit. Lakukan dengan hati-hati jika bisnis Anda sensitif terhadap latensi.
Start Consumption from Latest Offset: Jika Anda memilih opsi ini, konsumen dalam kelompok akan melewati semua pesan yang terakumulasi dalam topik yang ditentukan dan memulai konsumsi dari pesan terbaru.
Start Consumption from Offset Corresponding to Specified Point in Time: Jika Anda memilih opsi ini, kontrol pemilihan waktu akan ditampilkan. Anda dapat menentukan titik waktu tertentu. Konsumen akan mulai mengonsumsi pesan yang dikirim setelah waktu tersebut, terlepas dari apakah pesan tersebut sebelumnya sudah dikonsumsi atau belum.
Di kotak dialog Prompt, konfirmasi informasi tersebut dan klik OK.
FAQ
Apa yang harus saya lakukan jika gagal mengatur ulang offset konsumen dengan kedua metode tersebut?
Pastikan Anda menggunakan konsumsi klustering. Mode konsumsi broadcasting tidak mendukung pengaturan ulang offset konsumen.
Pastikan konsumen sedang online. Anda hanya dapat mengatur ulang offset konsumen ketika konsumen sedang online.
Periksa versi SDK. Masalah ini dapat terjadi jika versi SDK sudah usang. Kami menyarankan Anda melakukan upgrade SDK ke versi terbaru. Misalnya, versi SDK klien TCP untuk Java harus 1.8.0.Final atau lebih baru. Untuk informasi selengkapnya, lihat Version Guide.
Mengapa beberapa pesan tidak diatur ulang setelah saya mengatur ulang offset konsumen untuk melewati pesan yang terakumulasi?
Fitur pengaturan ulang offset konsumen tidak berlaku untuk pesan yang berada dalam status retry. Oleh karena itu, sejumlah kecil pesan yang sedang menunggu retry mungkin tetap dikirimkan setelah pengaturan ulang.
Pesan terlama apa yang dapat dikonsumsi ulang oleh konsumen dengan mengatur ulang offset konsumen?
Saat Anda mengatur ulang offset ke titik waktu tertentu, waktu paling awal yang dapat Anda pilih sesuai dengan waktu penyimpanan pesan paling awal dalam topik tersebut. Instans seri ApsaraMQ for RocketMQ 4.x menyimpan pesan maksimal selama 3 hari. Pesan yang lebih tua dari 3 hari akan dihapus dari topik.
Oleh karena itu, konsumen dapat mengonsumsi ulang pesan yang berusia hingga 3 hari dengan mengatur ulang offset konsumen.
Referensi
Selain melalui console, ApsaraMQ for RocketMQ juga memungkinkan Anda mengatur ulang offset konsumen dengan memanggil operasi API.