apache-kafka - 卡夫卡坚持消息,直到被所有组消费
问题描述
我有一个 Kafka 主题,它有多个消费者组。如果尚未被所有消费者组读取,我需要在持久性持续时间到期时不删除有关该主题的消息。
是否可以在持续时间之外设置其他持久性规则?如果消息从未被消费过,我需要消息始终停留在一个主题上。
如果消息没有被消耗并且持续时间到期,是否可以“刷新”消息的超时?
解决方案
这在卡夫卡是不可能的。Kafka - 与许多更传统的消息代理不同 - 不跟踪已消费或未消费的消息。这是消费者的责任。而且由于代理不跟踪这个,它不能基于这个进行主题清理。
在某些情况下,您可以使用压缩主题来保留每个键的最后一条消息。多亏了这一点,即使是连接较晚的消费者也可能能够恢复状态。但这仅适用于特定数据类型,例如状态更改等。
推荐阅读
- google-api - 枚举根备份和同步/计算机文件夹
- javascript - 用angularjs修改css类
- linux - Docker 容器未正确安装卷
- javascript - 我怎样才能把我的标题放在一切之上?
- amazon-web-services - 为什么 ECS 管道需要任务定义,而服务已经在 AWS 中分配了任务定义?
- django - 在 aws elastic beanstalk 上部署 postgresql 的 Django
- git - 将 NestJs 应用程序持续部署到 Heroku
- java - 为什么 MockMvc 在启用 Spring Security 的有效路径上返回 404 错误?
- java - 在java中为HttpRequest添加代理
- python - 如何在 Heroku 中运行 python 包 pdf2image:不工作