使kafka消费者在订阅之前使用现有消息

jhdbpxl9  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(280)

如果消费者使用 auto.offset.reset=latest 然后他们错过了在订阅某个主题之前发布到该主题的所有消息。。。众所周知,消费者 auto.offset.reset=latest 不重播主题订阅前存在的邮件。。。
所以我需要:
使发布服务器等待所有订阅服务器开始使用消息,然后开始发布。不知道如何做到这一点,没有杠杆zookeeper例如。Kafka有办法做到这一点吗?
另一种方法是 auto.offset.reset=latest 消费者,并使他们显式消费所有现有的消息之前,以防他们即将订阅一个主题与现有的消息。。。
这个案子的最佳做法是什么?
我猜使用者必须检查主题中是否有现有的消息,如果有消息就使用它们,然后启动 auto.offset.reset=latest 消费。对我来说这是最好的办法。。。

vwkv1x7d

vwkv1x7d1#

如果启动了高级使用者,它将执行以下操作:
寻找其消费者群体的承诺补偿
答。如果找到有效的偏移量,则从那里继续
b。如果找不到有效偏移,请根据设置偏移 auto.offset.reset 因此, auto.offset.reset 只有触发器,如果没有提交有效的偏移量。这种行为是为了在发生故障时提供至少一次的处理保证。
因此,如果你想从一开始就阅读一个主题,你可以使用一个新的消费者 group.id 并设置 auto.offset.reset = earliest 或者在启动时使用 seekToBeginning() 在你开始工作之前 poll() 循环。

nue99wik

nue99wik2#

我们使用eureka提供的服务发现功能(任何其他服务发现应用程序都可以完成这项工作)+别名来执行选项(1)。基本上,在至少有一个订阅者可用之前,发布者不会注册自己(并开始处理请求或发布通知)。

相关问题