В этом примере показано полностью работающее консольное приложение, которое может использовать все разделы в теме, создавая одну процедуру на раздел:
https://github.com/Shopify/sarama/blob/master/tools/kafka-console-consumer/kafka-console-consumer.go
Это связано в конце потокаВы отправили в своем вопросе.
В основном это создает один потребитель:
c, err := sarama.NewConsumer(strings.Split(*brokerList, ","), config)
Затем получает все разделы для нужной темы:
func getPartitions(c sarama.Consumer) ([]int32, error) {
if *partitions == "all" {
return c.Partitions(*topic)
}
...
Затем для каждого разделаон создает PartitionConsumer и потребляет из каждого раздела в другой программе:
for _, partition := range partitionList {
pc, err := c.ConsumePartition(*topic, partition, initialOffset)
....
wg.Add(1)
go func(pc sarama.PartitionConsumer) {
defer wg.Done()
for message := range pc.Messages() {
messages <- message
}
}(pc)
}