// commitOffset sends an offset message to kafka for the given consumer group func commitOffset(broker *sarama.Broker, topic string, partition int32, group string, offset int64, generationID int32, memberID string) { v := int16(0) if config.offset.version.IsAtLeast(sarama.V0_8_2_0) { v = 1 } if config.offset.version.IsAtLeast(sarama.V0_9_0_0) { v = 2 } req := &sarama.OffsetCommitRequest{ Version: v, ConsumerGroup: group, ConsumerGroupGeneration: generationID, ConsumerID: memberID, RetentionTime: -1, } req.AddBlock(topic, partition, offset, 0, "") offsetResp, err := broker.CommitOffset(req) if err != nil { fmt.Fprintf(os.Stderr, "Failed to commit offsets. err=%v\n", err) os.Exit(1) } else if len(offsetResp.Errors) > 0 { for topic, perrs := range offsetResp.Errors { for partition, kerr := range perrs { if kerr != sarama.ErrNoError { fmt.Fprintf(os.Stderr, "Failed to commit offsets topic=%s, partition=%s. err=%v\n", topic, partition, err) os.Exit(1) } } } } }