Kafka'da mesaj sıralamasını korumanın yollarından biri, önemsizliğin (idempotency) etkin olduğu tek bir bölüm (topic) konusunun üreticiler ile kullanılmasıdır. Idempotent üreticiler, yeniden denemelerden sonra bile mesajları tekrarlamadan bir kez iletmeyi hedefler. Kafka sunucusu, her üreticiye benzersiz bir Üretici Kimliği (PID) atar. Ayrıca her mesaja artan bir sıra numarası verilir. Aşağıdaki ayarlarla bunu başarabilirsiniz.


enable.idempotence = true
acks = all
max.in.flight.requests.per.connection = 1

Golang için Sarama istemcisini kullanırsanız aşağıdaki gibi görünür.


cfg := sarama.NewConfig()
cfg.Producer.Idempotent = true
cfg.Producer.RequiredAcks = sarama.WaitForAll
cfg.Net.MaxOpenRequests = 1
...

Birden fazla bölüme sahip bir konunuz varsa, Kafka'yı bölümler arasında sıralamayı koruyacak şekilde yapılandıramazsınız. Kafka bir konu içinde sıralamayı garanti etmez, yalnızca bir bölüm içinde sıralamayı garanti eder. Başka bir deyişle, tüketici için mesaj sırası konu bölümleri arasında korunmaz, yalnızca bölüm başına korunur. Sıralamayı yapmak için bir yol bulmanız gerekecek.