Sobes.tech
Junior — Middle

Come sceglie il produttore Kafka la partizione per inviare un messaggio?

sobes.tech AI

Risposta dell'AI

Il produttore Kafka sceglie una partizione per inviare un messaggio in base alla chiave del messaggio e alle impostazioni di partizionamento. Se il messaggio ha una chiave, Kafka utilizza una funzione hash di questa chiave per determinare la partizione specifica, garantendo che tutti i messaggi con la stessa chiave vadano nella stessa partizione. Se manca la chiave, il produttore distribuisce generalmente i messaggi in modo ciclico (round-robin) per bilanciare il carico.

Esempio in Go usando la libreria sarama:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // chiave per il partizionamento
    Value: sarama.StringEncoder("payload del messaggio"),
}
partition, offset, err := producer.SendMessage(msg)

Qui, la chiave "userID123" verrà usata per selezionare la partizione, in modo che tutti i messaggi con questa chiave vadano nella stessa partizione.