Saya relatif baru di Kafka. Saya telah melakukan sedikit percobaan dengan itu, tetapi beberapa hal tidak jelas bagi saya mengenai penggantian konsumen. Dari apa yang saya pahami sejauh ini, ketika konsumen mulai, offset yang akan mulai dibaca ditentukan oleh pengaturan konfigurasi auto.offset.reset
(koreksi saya jika saya salah).
Sekarang katakan misalnya ada 10 pesan (offset 0 hingga 9) dalam topik, dan seorang konsumen mengkonsumsi 5 dari mereka sebelum turun (atau sebelum saya membunuh konsumen). Lalu katakan saya memulai kembali proses konsumen itu. Pertanyaan saya adalah:
Jika
auto.offset.reset
diset kesmallest
, apakah selalu akan mulai mengkonsumsi dari offset 0?Jika
auto.offset.reset
diatur kelargest
, apakah akan mulai mengkonsumsi dari offset 5?Apakah perilaku mengenai skenario semacam ini selalu deterministik?
Tolong jangan ragu untuk berkomentar jika ada pertanyaan saya yang tidak jelas. Terima kasih sebelumnya.
sumber
auto.offset.reset
tidak ada artinya setelah itu? Satu-satunya signifikansi pengaturan itu adalah ketika tidak ada yang dilakukan (dan idealnya itu akan menjadi pada saat pertama kali memulai konsumen)?auto.offset.reset
dan melanjutkan dari offset yang dilakukan. Jika Anda selalu menggunakan grup konsumen yang berbeda (seperti menghasilkannya ketika memulai konsumen), maka konsumen akan selalu menghormatiauto.offset.reset
Hanya pembaruan: Dari Kafka 0.9 dan seterusnya, Kafka menggunakan versi Java baru dari konsumen dan nama parameter auto.offset.reset telah berubah; Dari manual:
Saya meluangkan waktu untuk menemukan ini setelah memeriksa jawaban yang diterima, jadi saya pikir mungkin bermanfaat bagi komunitas untuk mempostingnya.
sumber
Lebih jauh lagi ada offsets.retention.minutes. Jika waktu sejak komit terakhir>
offsets.retention.minutes
, makaauto.offset.reset
tendangan jugasumber
Prolong default value of offsets.retention.minutes to be at least twice larger than log.retention.hours.
issues.apache.org/jira/browse/KAFKA-3806offsets.retention.minutes
: <b> Setelah grup konsumen kehilangan semua konsumennya (yaitu menjadi kosong) offsetnya akan disimpan untuk periode retensi ini sebelum dibuang. </b> Untuk standalone konsumen (menggunakan penugasan manual), offset akan kedaluwarsa setelah waktu komit terakhir ditambah periode retensi ini. (Ini untukKafka 2.3
)