我想了解当消息被写入具有多个分区的主题时Kafka如何维护消息序列的任何信息/解释。 对于例如我有多个消息生成器,每个消息生成器顺序生成消息,并使用多个分区写入Kafka主题。在这种情况下,消费者群体将如何使用消息。
答案 0 :(得分:6)
Kafka仅对分区内的记录提供总订单,而不是在主题中的不同分区之间。即使在一个分区内,如果启用了重试并且 max.in.flight.requests.per.connection 大于1,您仍然可能会遇到无序事件。
解决方法是创建一个只包含一个分区的主题,尽管这意味着每个使用者组只有一个使用者进程。
答案 1 :(得分:5)
Kafka将根据给予生产者的消息密钥将消息存储在分区中。如果没有给出,则消息将以循环方式写入分区。要保持对主题的排序,您需要确保有序序列具有相同的键,或者主题只有一个分区。