在kafka中,一个topic由多个partition分区组成,消息推送到不同的partition分区中,在拉取时是无序的。

解决kafka消息有序的方法有两种。

1)设置1个topic主题只有1个partition分区。

因为单个partition是有序的,消息存放到同一个partition分区,那么在消费时也是有序的。

2)指定消息key值为同一值。

在kafka中一条消息由key和value两个部分组成,相同的key值经过hash计算会落到同一个partition分区,而单个partition分区有序,所以在消费者拉去消息时也是有序的。

总结:

因为1个topic设置为1个分区,不能发挥kafka高吞吐量的特性,所以第二种方法较好。