Sobes.tech
Senior

Como fazer com que todos os eventos de um mesmo pedido sejam direcionados para uma única partição Kafka?

sobes.tech IA

Resposta da IA

Para que todos os eventos de um mesmo pedido caiam numa única partição do Kafka, é necessário usar uma chave (key) ao enviar mensagens, que identifique de forma inequívoca o pedido.

O Kafka usa a chave para calcular a partição através de uma função hash. Se usar a mesma chave (por exemplo, order_id) para todos os eventos de um pedido, eles irão para a mesma partição.

Exemplo em Go usando sarama (cliente Kafka popular):

producer.Input() <- &sarama.ProducerMessage{
    Topic: "orders",
    Key:   sarama.StringEncoder(orderID), // orderID — identificador do pedido
    Value: sarama.StringEncoder(eventData),
}

Desta forma, garante-se que todos os eventos com a mesma chave estarão na mesma partição, o que é importante para processamento ordenado e consistência.