How to Use Kafka with Go (segmentio/kafka-go, confluent-kafka-go)

Web
Use segmentio/kafka-go for simplicity or confluent-kafka-go for performance when connecting Go applications to Kafka.

Use segmentio/kafka-go for a lightweight, pure-Go client or confluent-kafka-go for a high-performance wrapper around the official C library. Choose based on whether you need simplicity or advanced features like exactly-once semantics.

// segmentio/kafka-go example
import "github.com/segmentio/kafka-go"

reader := kafka.NewReader(kafka.ReaderConfig{
  Brokers:  []string{"localhost:9092"},
  Topic:    "my-topic",
  GroupID:  "my-group",
})

for {
  msg, err := reader.ReadMessage(context.Background())
  if err != nil { break }
  // process msg.Value
}

// confluent-kafka-go example
import "github.com/confluentinc/confluent-kafka-go/kafka"

consumer, _ := kafka.NewConsumer(&kafka.ConfigMap{
  "bootstrap.servers": "localhost:9092",
  "group.id":          "my-group",
  "auto.offset.reset": "earliest",
})
consumer.SubscribeTopics([]string{"my-topic"}, nil)

for {
  msg, err := consumer.ReadMessage(-1)
  if err != nil { break }
  // process msg.Value
}