// NewPartitionConsumer creates a new partition consumer instance func NewPartitionConsumer(group *ConsumerGroup, partition int32) (*PartitionConsumer, error) { config := sarama.ConsumerConfig{ DefaultFetchSize: group.config.DefaultFetchSize, EventBufferSize: group.config.EventBufferSize, MaxMessageSize: group.config.MaxMessageSize, MaxWaitTime: group.config.MaxWaitTime, MinFetchSize: group.config.MinFetchSize, OffsetMethod: sarama.OffsetMethodOldest, } offset, err := group.Offset(partition) if err != nil { return nil, err } else if offset > 0 { config.OffsetMethod = sarama.OffsetMethodManual config.OffsetValue = offset } stream, err := sarama.NewConsumer(group.client, group.topic, partition, group.name, &config) if err != nil { return nil, err } return &PartitionConsumer{ stream: stream, topic: group.topic, partition: partition, }, nil }