在 Confluence kafka go 中读取来自 kafka 主题的消息时如何使用确认?

Mad*_*yor 1 producer-consumer go apache-kafka

我正在开发一个推送通知,向客户端发送许多消息。消息被发布到主题中,订阅者从同一主题中读取消息。如果在从主题偏移量读取消息后立即出现错误,即使我无法发送消息,我的订阅者也需要读取下一条消息并发送它。我所说的错误是指服务器停机或出现严重问题。

如何阅读带有确认信息的消息?

小智 5

我不确定我明白你的意思

如果在从主题偏移量读取消息后立即出现错误,即使我无法发送消息,我的订阅者也需要读取下一条消息并发送它

我的理解是,您想要管理消费者如何处理确认(提交_consumer_offsets)。

因此,Kafka 允许消费者通过在 __consumer_offsets 主题中向 Kafka 生成消息来跟踪他们在每个分区中的位置(偏移量)。

有 3 个选项可供选择:

  1. 自动提交:使用enable.auto.commit=true,每隔auto.commit.interval.ms(默认5秒)自动提交。
  2. 同步提交:显式使用 commitSync() 同步提交,提交 poll() 返回的最新偏移量,如果失败则重试,直到获得确认。
  3. 异步提交 :以前的方法会等待代理响应确认提交,这会使事情变慢。我们可以使用commitAsync(),它不是阻塞的,如果失败也不会重试。它更快。我们可以将回调传递给 commitAsync()。

所以基本上,您可以让提交自动处理。同步提交并等待代理的确认或通过回调异步提交。

希望这能回答您的问题。

此致。