Sobes.tech
Junior — Middle

Como é que um grupo de consumidores é implementado no Apache Kafka?

sobes.tech IA

Resposta da IA

No Apache Kafka, um grupo de consumidores é implementado como um conjunto de consumidores que leem dados dos tópicos em conjunto, distribuindo as partições entre eles. Cada consumidor no grupo recebe um conjunto único de partições, garantindo o processamento paralelo das mensagens sem duplicação.

Ao usar Go (Golang) com a biblioteca sarama ou confluent-kafka-go, pode-se criar um grupo de consumidores especificando o mesmo group.id. O Kafka distribuirá automaticamente as partições entre os membros do grupo e acompanhará os deslocamentos (offsets).

Exemplo usando 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"}

// Implementação da interface ConsumerGroupHandler
handler := &MyConsumerGroupHandler{}

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

Dessa forma, o grupo de consumidores permite escalar o processamento de mensagens e garante o balanceamento de carga entre as instâncias.