如果我有消息id,客户端是否可以删除某个主题上的kafka消息,并且该消息尚未被消费者使用。
gorkyyrv1#
不,通常不可能(对于客户机)从Kafka主题中删除单个消息。从kafka主题中删除消息是通过主题级配置进行管理的 cleanup.policy . 根据文件:“delete”或“compact”的字符串。此字符串指定要在旧日志段上使用的保留策略。当达到保留时间或大小限制时,默认策略(“删除”)将丢弃旧段。“压缩”设置将启用主题的日志压缩。“delete”模式基于时间或字节大小限制,而“compact”模式确保主题中至少有一条相同键的消息可用。作为您的解决方案,我可以想到以下几点:为主题启用日志压缩确保已为主题中的每个不同消息定义了一个单独的键如果您计划删除一条特定的消息,请使用相同的键和“null”值向主题发送一条消息。在这种情况下,此消息最终将通过压缩清理器删除。Kafka文献中给出了有关原木压实的详细解释。
cleanup.policy
1条答案
按热度按时间gorkyyrv1#
不,通常不可能(对于客户机)从Kafka主题中删除单个消息。
从kafka主题中删除消息是通过主题级配置进行管理的
cleanup.policy
. 根据文件:“delete”或“compact”的字符串。此字符串指定要在旧日志段上使用的保留策略。当达到保留时间或大小限制时,默认策略(“删除”)将丢弃旧段。“压缩”设置将启用主题的日志压缩。
“delete”模式基于时间或字节大小限制,而“compact”模式确保主题中至少有一条相同键的消息可用。
作为您的解决方案,我可以想到以下几点:
为主题启用日志压缩
确保已为主题中的每个不同消息定义了一个单独的键
如果您计划删除一条特定的消息,请使用相同的键和“null”值向主题发送一条消息。在这种情况下,此消息最终将通过压缩清理器删除。
Kafka文献中给出了有关原木压实的详细解释。