Kafka在制作时将Offset返回为0

时间:2017-10-03 11:56:10

标签: go apache-kafka kafka-producer-api confluent-kafka

使用confluent-kafka-go在golang中编写基于通道的基本生成器,并通过汇合设置单个分区单个代理kafka。 有时在迭代期间通过acks生成成功生成的消息的偏移量被接收为 0

示例日志:

  

{“level”:“info”,“msg”:“成功发布到主题测试,偏移0,分区0和长度1316”,“时间”:“2017-10-03T17:03:43 + 05: 30" }

     

{“level”:“info”,“msg”:“成功发布到主题测试,偏移0,分区0和长度1316”,“时间”:“2017-10-03T17:03:43 + 05: 30" }

这是迭代kafka acks的函数:

func (kc *KafkaClient) HandleAcknowledgements() {
  for event := range kc.AckChannel {
    message := event.(*kafka.Message)

    if message.TopicPartition.Error != nil {
      log.Errorf("Delivery Failed: Partition: %d Reason: %v", message.TopicPartition.Partition, message.TopicPartition.Error)
    } else {
      if message.TopicPartition.Offset == 0 {
        bodyLen := len(message.Value)
        log.Infof("Published successfully to topic %s, offset %s, Partition %d and Length %d", *message.TopicPartition.Topic, message.TopicPartition.Offset, message.TopicPartition.Partition, bodyLen)
      }
    }
  }
}

我的保留政策如下:

   log.retention.hours=168

任何形式的帮助都会很棒,为什么会发生这种情况!

感谢。

1 个答案:

答案 0 :(得分:0)

尝试在配置中将produce.offset.report设置为true。

  

尝试将producer.offset.report设置为true,否则为   它只会报告每个消息中最后一条消息的偏移量   批次/ messageSet。

     

默认情况下,go客户端应该这样做。

https://github.com/confluentinc/confluent-kafka-go/issues/95#issuecomment-330837647

如果这不能解决您的问题,您可以发布用于生成的代码和配置吗?