В Kafka порядок гарантируется в пределах партиции; между партициями порядка нет. Для упорядоченной обработки по ключу используют один ключ на логическую сущность (user_id) - все события пользователя в одну партицию. В Go консьюмер обрабатывает сообщения из партиции последовательно (или с ограниченным параллелизмом по ключу). Идемпотентность и версии событий помогают при дублях.
producer.Produce(&kafka.Message{
Key: kafka.EncodeKey(userID),
Value: payload,
})