我使用Spring Integration Kafka扩展来读取和处理来自Kafka in Java应用程序的消息。据我所知,它使用的高级消费者API不允许在Zookeeper中完全管理偏移量。
在我的情况下,我们有 auto.commit.enable = false,以便在处理完邮件后向Zookeeper提交偏移量。如果处理失败,那么offset将不会被提交,我们应该尝试在从Zookeeper的偏移量开始的某个配置时间内再次处理相同的消息。但它不起作用,因为我认为,Apache Kafka客户端在内存中保持偏移。
我发现 kafka.consumer.ConsumerIterator 处理偏移量,如果 consumeOffset 大于Zookeeper,那么它将使用消费者读取消息。
所以,我想知道有没有办法在Kafka客户端重置偏移量以开始从Zookeeper中的偏移量读取?
答案 0 :(得分:1)
你不介意分享你的<int-kafka>
配置,并指出你有什么问题吗?
这样做MessageLeftOverTracker.clearMessagesLeftOver()
可能就足够了吗?
我与Kafka不太合作,但知道Spring Integration的功能。