Apache Kafka 和持久订阅

Apache Kafka and durable subscribtion

我正在考虑使用 Apache Kafka,但找不到有关持久订阅的任何信息。假设我的分区中的消息有 5 秒的过期时间。现在如果消费者失败并在 5 秒后重新连接,他错过的消息将消失。更糟糕的是,他不会知道自己错过了一条消息。持久订阅模式通过为失败或断开连接的消费者保存消息来解决这个问题。 Kafka 是否实现了类似的功能?

Kafka 不支持此功能。但是您当然可以始终增加保留时间,从而限制消费者错过消息的可能性。

此外,如果您将 auto.offset.reset 设置为 none,您将得到一个异常,在消费者错过任何消息时通知您。因此,如果发生这种情况,可以得到通知。

最后但并非最不重要的一点是,使用 compacted 主题可能是可能的——这将确保在您明确写入所谓的逻辑删除消息之前不会删除消息。请注意,记录必须具有唯一键才能使用压缩主题。