KAFKA保证顺序消费

kafka保证顺序消费

在项目中经常会出现需要保证消息有序性的需求。

1,为什么要保证消息的有序性

有些业务有前后依赖关系,比如数据更新多次,如果无序看到的就是历史数据,还有像下单支付,肯定是要先下单再去支付,由于kafka多个partition是可以并发存取的,通常为了大吞吐大多数也会采取多partition方案,并发下再加上网络传输的不确定性,就会导致后来的消息被先消费,先来的消息反而后消费

1,如何保证消息的有序性

1,topic下单个partition,此时所有的消息都落在一个parition中,自然是有序的,但是这种方案极大的降低了吞吐量

2,topic下多个partition,指定消息的key,或者指定分区,保证相同业务类型的数据落在一个分区,比如相同订单id落在同一个分区,不同id的订单可以并发写入。在消费端每个消费线程消费一个partition。

你可能感兴趣的:(kafka,java,分布式)