【发布时间】:2020-10-16 00:56:30
【问题描述】:
在我的 kafka java-project 中,我想在所有感兴趣的消费者收到新消息后立即删除消息。经过一番研究,我发现了一些旧的 stackoverflow 问题:here、one more 和 here。看完所有这些,我有一些问题。
据我所知,我真的应该依靠时间或空间的保留。但是,答案很旧,所以也许有些改变?有没有其他方法可以真正确保在所有当前连接的消费者都阅读完消息后立即删除消息?在这种情况下,我需要检查是否所有消费者都已阅读该消息。我需要一个消费者组吗?
提前谢谢你。
【问题讨论】:
-
为什么要在消费后删除消息?是为了避免重复消息传递还是其他原因?
-
你为什么要这样做? Kafka 被设计为分布式提交日志。您想要的行为是发布-订阅系统,如 JMS 服务器、RabbitMQ 或亚马逊 SNS。
-
@GoviS 问题是,我需要消费者真正处理消息。因此,我想在所有消费者实际接收并处理该消息后删除该消息。目前,处理时间和消息大小可能会有很大差异,所以我真的不能对保留时间或大小进行限制。
-
@GreyFairer 上面的答案
-
我可以让消费者在处理后提交,但这对我有帮助吗?
标签: java apache-kafka kafka-consumer-api