如何设置消费者从Golang Kafka 10中的特定偏移量开始

时间:2017-02-01 15:46:49

标签: go apache-kafka sarama

我的需求是让生产者从它崩溃之前处理的最后一条消息开始。幸运的是,我只有一个主题,一个分区和一个消费者。

为此,我尝试了https://github.com/Shopify/sarama,但它似乎尚未推出。 我现在使用https://godoc.org/github.com/bsm/sarama-cluster,它允许我提交每个消息偏移量。

我无法检索最后提交的偏移量 我无法弄清楚如何使sarama consumer从偏移开始。我到目前为止找到的唯一参数是Config.Producer.Offsets.Initial

  1. 如何检索上次提交的偏移?
  2. 如何让消费者从最后一个已提交偏移量的消息开始? OffsetNewest将从最后生成的消息开始,而不是消费者最后处理的消息。
  3. 是否可以仅使用Shopify / sarama而不是bsm / sarama-cluster?
  4. 提前感谢

    P.S。我正在使用Kafka 10.0,所以偏移是在kafka而不是在zookeeper中存储。

    EDIT1: 部分解决方案:从sarama.OffsetOldest获取所有消息并跳过所有消息,直到找到未处理的消息。

1 个答案:

答案 0 :(得分:0)

如果已为分区保存偏移量,则sarama-cluster将从该偏移量恢复消耗。仅当没有保存的偏移量时才使用Config.Producer.Offsets.Initial选项(首先针对使用者组运行)。

您可以通过在main()功能的开头添加以下行来验证这一点:

sarama.Logger = log.New(os.Stdout, "sarama: ", log.LstdFlags)

然后你会在输出中看到如下内容:

cluster/consumer CID-17db1be4-a162-411c-a106-4d198191176a consume sample/0 from 12

其中12是偏离Sarama将从该分区开始(样本/ 0)。