全部产品
Search
文档中心

ApsaraMQ for Kafka:Mengapa offset konsumen yang kedaluwarsa tetap dipertahankan?

更新时间:Dec 12, 2025

Deskripsi masalah

Anda menggunakan instans ApsaraMQ for Kafka dengan versi server 2.2.0. Offset konsumen suatu Group tetap disimpan meskipun telah kedaluwarsa. Anda masih dapat melihat detail konsumen untuk topik tersebut pada tab Subscriptions di halaman Topic Details dalam ApsaraMQ for Kafka console dengan mengklik Consumer Details.

Catatan

Parameter Consumer Offset Retention Period menentukan durasi maksimum penyimpanan offset konsumen. Periode retensi untuk suatu offset konsumen dimulai saat offset tersebut dikomit. Ketika periode retensi berakhir, sistem akan menghapus offset konsumen tersebut. Perlu diperhatikan bahwa penghapusan offset konsumen tidak mengatur ulang offset ke 0, melainkan menghapus catatan offset tersebut. Setiap kali offset konsumen dikomit ke partisi topik, pengatur waktu periode retensi untuk offset tersebut diatur ulang. Untuk informasi selengkapnya, lihat Modify message configurations.

Penyebab yang mungkin

Sesuai desain Kafka open source, offset konsumen dari suatu Group yang aktif tidak dihapus meskipun telah melebihi periode retensi yang ditentukan.

Catatan

Sebuah Group dianggap aktif jika berisi thread konsumen yang menggunakan metode `subscribe`, yang berbeda dari metode `assign`.

Sebagai contoh, Anda membuat Group bernama TestGroup untuk berlangganan Topic A dan berhasil mengkomit offset konsumennya. Karena perubahan bisnis, Anda membatalkan langganan TestGroup dari Topic A dan mendaftarkannya ke topik baru, yaitu Topic B. Dalam kasus ini, TestGroup tetap aktif. Offset konsumen untuk Group tersebut pada Topic A maupun Topic B tidak dihapus.

Jika Anda hanya membatalkan langganan TestGroup dari Topic A dan tidak mendaftarkannya ke topik baru, TestGroup menjadi tidak aktif. Offset konsumen untuk Topic A kemudian dihapus setelah periode retensinya berakhir.

Solusi

Untuk menghapus offset konsumen yang kedaluwarsa, lakukan salah satu operasi berikut:

  1. Putuskan koneksi Group agar menjadi tidak aktif, lalu lakukan salah satu langkah berikut:

    • Tunggu hingga offset konsumen kedaluwarsa. Sistem kemudian akan menghapusnya secara otomatis.

    • Atur ulang offset konsumen yang kedaluwarsa ke 0 untuk setiap partisi melalui console.

    • Pindahkan konsumen ke Group baru. Hal ini membuat Group asli menjadi tidak aktif. Tunggu hingga offset konsumen Group asli kedaluwarsa, lalu sistem akan menghapusnya secara otomatis.

  2. Tingkatkan versi server ke 2.6.0 atau yang lebih baru.

Dengan versi ini, Anda tidak perlu memutus koneksi konsumen. Cukup batalkan langganan dari topik yang tidak lagi diperlukan. Sebagai contoh, jika TestGroup membatalkan langganan dari Topic A tetapi tetap aktif karena berlangganan Topic B, offset konsumen untuk kombinasi TestGroup dan Topic A akan dihapus setelah periode retensinya berakhir.