登录
首页 >  Golang >  Go问答

无法使用segmentio/kafka-go从主题的开头进行读取

来源:stackoverflow

时间:2024-02-08 17:18:19 328浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《无法使用segmentio/kafka-go从主题的开头进行读取》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我无法使用 kafka-go 从主题的开头阅读。以下是我创建阅读器的方法:

reader := kafka.NewReader(kafka.ReaderConfig{
        Brokers: []string{"127.0.0.1:9092"},
        GroupID: "my-group-id",
        Topic:   "my-topic",
    })
    reader.SetOffset(0)

    for {
        message, err := reader.ReadMessage(context.Background())

        if err != nil {
            log.Errorln("ReadMessage failed:", err)
        }

        log.Info("Received: ", string(message.Value))
        ...

我也尝试传递 kafka.firstoffsetkafka.lastoffset ,但当我重新启动应用程序时,所有结果都会从最新的偏移量读取。如果我将 startoffset 字段设置为 kafka.readerconfig 对象中的 0,我会得到相同的结果。


正确答案


为了指定起始偏移量,我必须指定分区:

reader := kafka.NewReader(kafka.ReaderConfig{
    Brokers: []string{"127.0.0.1:9092"},
    Topic:   "my-topic",
    Partition: 0,
    StartOffset: 0,
})

您不能同时指定 groupidpartition 来设置 startoffset

今天关于《无法使用segmentio/kafka-go从主题的开头进行读取》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>