kafka,一个topic通常会有多个partion。单个的partion是保序的,那么多个partion呢?
要想在多个partion情况下实现保序,在send消息的时候,ProducerRecord中一定要指定key。
根据key指定partitions:
DefaultPartitioner中源码:
return Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
partion保序了,剩下的就是消费者保序,一定要采用单线程进行消费。