Kafka 0.9是日志压缩删除标记,立即有效屏蔽先前的消息吗?

时间:2016-04-01 22:20:46

标签: apache-kafka

在Kafka文档中,log compaction

  

压缩也允许删除。带有键和null的消息   有效负载将被视为从日志中删除。这个删除标记   将导致删除该密钥的任何先前消息(如同任何消息一样)   带有该键的新消息),但删除标记在它们中是特殊的   一段时间后,它们将自己从日志中清除。该   上面给出了不再保留删除的时间点。

我的场景:我发送消息流入内存引擎,然后它们出现在无序的另一端。消息可以在引擎的状态机缓存(它是规则处理器引擎)的任何地方花费0到数小时。

因此,我想知道我是否可以使用日志压缩作为我的持久性答案,以便始终知道哪些消息仍然在引擎中的内存中以实现容错。因此,从消息偏移量0重放将始终用于重新加载引擎内存中的内容,然后在存在的任何新消息中选择流式传输。这应该起作用(理论上),因为退出引擎的每条消息都为其< key>附加了删除标记。

这准确吗?我主要关注的是验证启用了日志压缩:

  1. 删除标记只不过是一个键>具有有效负载的空值。对于producer.send()没有其他特殊处理方法。
  2. 将删除标记附加到主题并将其提交到与早期" real"相同的分区的那一刻。消息,任何分区读取都将跳过取消的消息。我必须立即依赖这种情况,而不必等待任何清理阶段。我认为压实清洁工只是简单地执行物理移除已经从< key>时刻已经被逻辑移除的东西。被重用了。
  3. 我需要验证较旧的< key>从取代< key>开始,读取不存在消息。消息附加了。

0 个答案:

没有答案