首页 > 解决方案 > 卡夫卡坚持消息,直到被所有组消费

问题描述

我有一个 Kafka 主题,它有多个消费者组。如果尚未被所有消费者组读取,我需要在持久性持续时间到期时不删除有关该主题的消息。
是否可以在持续时间之外设置其他持久性规则?如果消息从未被消费过,我需要消息始终停留在一个主题上。
如果消息没有被消耗并且持续时间到期,是否可以“刷新”消息的超时?

标签: apache-kafka

解决方案


这在卡夫卡是不可能的。Kafka - 与许多更传统的消息代理不同 - 不跟踪已消费或未消费的消息。这是消费者的责任。而且由于代理不跟踪这个,它不能基于这个进行主题清理。

在某些情况下,您可以使用压缩主题来保留每个键的最后一条消息。多亏了这一点,即使是连接较晚的消费者也可能能够恢复状态。但这仅适用于特定数据类型,例如状态更改等。


推荐阅读