Sobes.tech
Senior

¿Cómo hacer que todos los eventos de un mismo pedido se asignen a una sola partición de Kafka?

sobes.tech AI

Respuesta de la IA

Para que todos los eventos de un mismo pedido caigan en una sola partición de Kafka, es necesario usar una clave (key) al enviar los mensajes, que identifique de manera inequívoca el pedido.

Kafka utiliza la clave para calcular la partición mediante una función hash. Si se usa la misma clave (por ejemplo, order_id) para todos los eventos de un pedido, estos caerán en la misma partición.

Ejemplo en Go usando sarama (un cliente popular de Kafka):

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

De esta forma, se garantiza que todos los eventos con la misma clave estarán en una misma partición, lo cual es importante para el procesamiento en orden y la consistencia.