Sobes.tech
Junior — Middle

Jak realizowana jest grupa konsumentów w Apache Kafka?

sobes.tech AI

Odpowiedź od AI

W Apache Kafka grupa konsumentów jest implementowana jako zbiór konsumentów, którzy wspólnie odczytują dane z topików, dzieląc między siebie partycje. Każdy konsument w grupie otrzymuje unikalny zestaw partycji, co zapewnia równoległe przetwarzanie wiadomości bez duplikacji.

Przy użyciu Go (Golang) z bibliotekami sarama lub confluent-kafka-go można utworzyć grupę konsumentów, podając ten sam group.id. Kafka automatycznie rozdzieli partycje między członków grupy i będzie śledzić przesunięcia (offsets).

Przykład z użyciem sarama:

config := sarama.NewConfig()
config.Version = sarama.V2_1_0_0

consumerGroup, err := sarama.NewConsumerGroup([]string{"localhost:9092"}, "my-group", config)
if err != nil {
    panic(err)
}

topics := []string{"my-topic"}

// Implementacja interfejsu ConsumerGroupHandler
handler := &MyConsumerGroupHandler{}

for {
    err := consumerGroup.Consume(ctx, topics, handler)
    if err != nil {
        log.Fatal(err)
    }
}

W ten sposób grupa konsumentów umożliwia skalowanie przetwarzania wiadomości i zapewnia równoważenie obciążenia między instancjami.