java - Kafka 消费者在第二次通话时返回空
问题描述
我向Kafka生产者插入一条记录,然后调用消费者返回插入的元素(和先前插入的元素),然后我再次调用客户(不向生产者插入新记录)消费者不返回任何记录。
据我所知,记录应该保留在主题中。我不知道如何在属性中将确认设置为 false。这个问题与确认有关吗?
解决方案
消费者只会收到“新”消息。如果您之前已经阅读到主题结束并且没有任何新内容,那么您将一无所获。
如果您想从主题的开头再次阅读,则必须“倒带”消费者(或创建一个新消费者)。
我不知道如何在属性中将确认设置为 false(这个问题与确认有关吗?)
如果您使用消费者组,消费者的偏移量(每个主题分区读取的距离)将存储在 Kafka(或旧版本的 Zookeeper)中。您可以通过确认(或不确认)收到消息来控制这一点。但是,这仅在消费者重新启动时有效,而不是对已经运行的实例。
如果您不使用消费者组,则此偏移跟踪完全在消费者实例本身内完成。
推荐阅读
- ruby-on-rails - PUT #update 控制器测试失败,因为它没有修改给定的对象
- reactjs - 通过动态导入代码拆分应用程序部分
- ruby-on-rails - 强参数不会从视图到导轨中的控制器
- grafana - 如何按未知/随机标签分组?
- reactjs - 对 Reactjs 中的输入进行自动验证的插件?
- android - 2D滚动,支持RTL布局
- html - 如何通过媒体查询固定圆形进度条位置?
- phaser-framework - 如何使用 moveToObject 移动容器 - Phaser 3
- django - Django - 检查是否点击了表单提交按钮?
- r - 如何通过特定前缀将多个数据框转换为列表