Sobes.tech
Junior — Middle

Como é que o produtor Kafka escolhe a partição para enviar uma mensagem?

sobes.tech IA

Resposta da IA

O produtor Kafka escolhe uma partição para enviar uma mensagem com base na chave da mensagem e nas configurações de particionamento. Se a mensagem tiver uma chave, o Kafka usa uma função hash dessa chave para determinar a partição específica, garantindo que todas as mensagens com uma mesma chave vão para a mesma partição. Se não houver chave, o produtor geralmente distribui as mensagens de forma circular (round-robin) para equilibrar a carga.

Exemplo em Go usando a biblioteca sarama:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // chave para particionamento
    Value: sarama.StringEncoder("payload da mensagem"),
}
partition, offset, err := producer.SendMessage(msg)

Aqui, a chave "userID123" será usada para escolher a partição, para que todas as mensagens com essa chave vão para a mesma partição.