Apache kafka 卡夫卡消费者不会从它停止的地方继续

Apache kafka 卡夫卡消费者不会从它停止的地方继续,apache-kafka,Apache Kafka,我目前正在使用消费者团体阅读卡夫卡的信息。然而,我注意到,如果我的消费者情绪低落,而我又把它带回来,它就不会从它停止的地方消费消息。在阅读了文档之后,似乎我必须自己实现这个功能。我知道消费者有一个autooffset.reset配置,但这似乎只允许我从一开始就使用所有内容,或者从队列中当前的最后一条消息开始使用。我的理解正确吗?我必须亲自实施这一点?或者我在这里遗漏了什么。这似乎是任何排队系统都应该提供的一个非常基本的特性 我使用的版本是0.8.1.1,scala版本为2.10。根据链接,您正在

我目前正在使用消费者团体阅读卡夫卡的信息。然而,我注意到,如果我的消费者情绪低落,而我又把它带回来,它就不会从它停止的地方消费消息。在阅读了文档之后,似乎我必须自己实现这个功能。我知道消费者有一个autooffset.reset配置,但这似乎只允许我从一开始就使用所有内容,或者从队列中当前的最后一条消息开始使用。我的理解正确吗?我必须亲自实施这一点?或者我在这里遗漏了什么。这似乎是任何排队系统都应该提供的一个非常基本的特性


我使用的版本是0.8.1.1,scala版本为2.10。

根据链接,您正在尝试使用SimpleConsumer。使用SimpleConsumer,您需要处理低级别的细节,比如自己管理补偿。这更加困难,但允许对数据的使用方式进行更多的控制

如果您只想读取数据而不必担心低级细节,请查看HighLevelConsumer:

谢谢链接,丹尼斯!这正是我正在使用的。如果你考虑这个场景- 1。关闭消费者。2.向队列中添加更多消息。3.重新启动消费者。使用者不使用在步骤2中添加的消息。相反,它将只等待新消息。如果您使用的是高级使用者,请检查autocommit.enable=true和autocommit.interval.ms是否设置为某个合理的值,或者您的代码是否显式调用commitofsets()。如果启用了自动提交,并且消费者在偏移量成功存储在Zookeeper中之前退出,您可能会遇到与您描述的情况类似的情况,即读取从一开始就开始。感谢您的建议!我会尝试一下并更新结果。如果我先启动制作人,这也行吗?我生成了一堆消息,然后运行我的消费者。默认情况下,消费者似乎在等待下一条消息。我想我想要的用例是——不管生产者何时开始,如果消费者是第一次开始(zk中没有偏移),那么就从头开始。如果存在偏移,请从存储的偏移继续。这可以通过配置实现吗?啊,是配置的组合让它工作。如果zookeeper中没有偏移量,则auto.offset.reset会将使用者设置为队列的开头,设置autocommit.enable=true会使使用者提交其偏移量。