在Kafka文档中,log compaction说
压缩也允许删除。带有键和null的消息 有效负载将被视为从日志中删除。这个删除标记 将导致删除该密钥的任何先前消息(如同任何消息一样) 带有该键的新消息),但删除标记在它们中是特殊的 一段时间后,它们将自己从日志中清除。该 上面给出了不再保留删除的时间点。
我的场景:我发送消息流入内存引擎,然后它们出现在无序的另一端。消息可以在引擎的状态机缓存(它是规则处理器引擎)的任何地方花费0到数小时。
因此,我想知道我是否可以使用日志压缩作为我的持久性答案,以便始终知道哪些消息仍然在引擎中的内存中以实现容错。因此,从消息偏移量0重放将始终用于重新加载引擎内存中的内容,然后在存在的任何新消息中选择流式传输。这应该起作用(理论上),因为退出引擎的每条消息都为其< key>附加了删除标记。
这准确吗?我主要关注的是验证启用了日志压缩:
我需要验证较旧的< key>从取代< key>开始,读取不存在消息。消息附加了。