使用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
任何形式的帮助都会很棒,为什么会发生这种情况!
感谢。
答案 0 :(得分:0)
尝试在配置中将produce.offset.report
设置为true。
尝试将producer.offset.report设置为true,否则为 它只会报告每个消息中最后一条消息的偏移量 批次/ messageSet。
默认情况下,go客户端应该这样做。
https://github.com/confluentinc/confluent-kafka-go/issues/95#issuecomment-330837647
如果这不能解决您的问题,您可以发布用于生成的代码和配置吗?