英文:
Java Spring boot kafka delete message from topic with offset
问题
我正在尝试创建一个Spring Boot应用程序(Java),必须能够通过提供其偏移量编号和分区来从Kafka主题中删除消息。
我一直在研究可以实现此功能的Java或Spring Boot软件包类,但我只找到了类似这样的内容:
https://stackoverflow.com/questions/49868789/delete-messages-from-a-topic-in-apache-kafka
有一个Java Kafka客户端,其中有一个方法可以删除偏移量之前的所有消息,但我只想删除一个消息。
这种操作是否可行?
提前致谢。
英文:
I am trying to create an spring boot app(java) that that must be able to delete a message from a kafka topic by giving its offset number and partition.
I have been I have been researching the java or spring boot package classes that can do this, but I only have found something like this:
https://stackoverflow.com/questions/49868789/delete-messages-from-a-topic-in-apache-kafka
there is a java kafka client that have a method to delete ALL messages BEFORE an offset, but I just one to delete one.
It is that possible?
thanks in advance
答案1
得分: 2
如果您仅具有偏移量编号和分区,并且只能删除该偏移量处的记录,那么无法保证所有消费者会获得最终一致的视图,因此这就不是标准操作。
建议:编写一个具有相同键但空主体的新记录,可以作为向所有消费者通知记录已删除的事件。
具有空主体的记录将根据删除保留时间保留在主题中。这通常比正常保留时间长,以确保消费者有足够的时间来删除过时的记录。在删除保留时间过期后,原始记录和空记录都将被日志压实删除。
英文:
If you only have the offset number and partition, and you could just delete the record at that offset, you can't guarantee that all consumers will have an eventually-consistent view, so that's why it's not a standard operation.
The suggestion: write a new record with the same key and a null body can serve as an event to tell all consumers the record is deleted.
The record with the null body will stay in the topic as configured in the delete retention time. This is usually longer than the normal retention time, to make sure consumers have enough time to delete obsolete records. After the delete retention time expires, both the original record and the null record will be removed by log compaction.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论