Java Spring boot kafka menghapus pesan dari topik dengan offset

Saya mencoba membuat aplikasi booting pegas (java) yang harus dapat menghapus pesan dari topik kafka dengan memberikan nomor offset dan partisinya. Saya telah meneliti kelas paket boot java atau spring yang dapat melakukan ini, tetapi saya hanya menemukan sesuatu seperti ini: Hapus Pesan dari Topik di Apache Kafka ada klien java kafka yang memiliki metode untuk menghapus SEMUA pesan SEBELUM offset, tapi saya hanya ingin menghapus satu. Apakah itu mungkin?

Terima kasih sebelumnya


person Gabriel García Garrido    schedule 08.09.2020    source sumber
comment
Apakah ini menjawab pertanyaan Anda? Hapus satu catatan dari topik kafka Ini adalah kafka kosong, dan tidak secara langsung tersedia di Java API. Tapi melihat jawabannya seringkali tidak bisa, maka itu berlaku juga di Java.   -  person GPI    schedule 08.09.2020
comment
Harus dihapus, saya tidak bisa membiarkan pesan sebagai null begitu saja dan itu juga harus dilakukan di Java ????   -  person Gabriel García Garrido    schedule 08.09.2020
comment
Siapa yang memberi Anda persyaratan ini, dan apakah mereka memahami cara kerja kafka?   -  person OneCricketeer    schedule 08.09.2020


Jawaban (1)


Jika Anda hanya memiliki nomor offset dan partisi, dan Anda dapat menghapus catatan pada offset tersebut, Anda tidak dapat menjamin bahwa semua konsumen pada akhirnya akan memiliki tampilan yang konsisten, jadi itulah mengapa ini bukan operasi standar.

Sarannya: tulis catatan baru dengan kunci yang sama dan isi nol dapat berfungsi sebagai peristiwa untuk memberitahu semua konsumen bahwa catatan tersebut dihapus.

Catatan dengan isi null akan tetap berada dalam topik seperti yang dikonfigurasi dalam waktu retensi penghapusan. Hal ini biasanya lebih lama dari waktu penyimpanan normal, untuk memastikan konsumen memiliki cukup waktu untuk menghapus catatan usang. Setelah waktu retensi penghapusan berakhir, catatan asli dan catatan nol akan dihapus dengan pemadatan log.

person GreyFairer    schedule 08.09.2020