tworzę temat Kafka o właściwościach poniżejKafka nie usuwając klucz z nagrobka
min.cleanable.dirty.ratio = 0,01, delete.retention.ms = 100, segment.ms = 100, cleanup.policy = kompaktowy
Powiedzmy wstawić par kV w celu 1111: 1, 1111: 2, 1111: null, 2222: 1 Co się dzieje teraz jest wyjątkiem ostatniego komunikatu, zagęszczanie dziennika działa na resztę wiadomości i usuwa pierwsze dwa, ale zachowuje 1111: null
Zgodne z dokumentacją
Kafka log compaction also allows for deletes. A message with a key and a null payload acts like a tombstone, a delete marker for that key. Tombstones get cleared after a period.
Więc mam nadzieję, że kiedy delete.retention.ms zostanie osiągnięty, null marker powinien usunąć wiadomość z kluczem
Mam dwa pytania - Dlaczego czy znacznik nagrobka nie działa? Dlaczego ostatnia wiadomość jest ignorowana podczas zagęszczania?
To co server.properties plik -
log.retention.ms=100
log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=100
log.cleaner.delete.retention.ms=100
log.cleaner.enable=true
log.cleaner.min.cleanable.ratio=0.01
opisałem w moim poście, że temat został stworzony z delete.retention.ms = 100, co oznacza, że klucz znacznik nagrobek byłby oczyszczone po 100 ms po wysłaniu. Jedno pytanie: czy może być związane z ustawieniem compact.policy? Czytałem gdzieś, że musimy ustawić go na zwarty, usuń, aby umożliwić również usuwanie. – Sam
Jeśli włączysz opcję "kompaktuj, usuń", w zasadzie uzyskasz TTL, a rekordy, które są starsze, zostaną skasowane (nawet jeśli nie ma nagrobka). Cf. https://cwiki.apache.org/confluence/display/KAFKA/KIP-71%3A+Włączanie + blogu + kompresja + i dekompresja+do+kojenia Czy możesz dwukrotnie sprawdzić konfigurację tematu, że jest naprawdę skonfigurowany za pomocą delete.retention.ms = 100? –
Uruchomiłem - opis na ten temat, a wynik to Configs: min.cleanable.dirty.ratio = 0.01, delete.retention.ms = 100, cleanup.policy = compact, segment.ms = 100 – Sam