为什么会有顺序消费的需求?
-
业务场景需要,比如一个订单的流程,从创建到支付到发货到评价,需要按照顺序进行。
-
有可能会有网络波动。
-
topic可能分为多个queue,那queue的分配是随机的,不同queue之间的消费速率不一样,所以可能导致履约成功的消息最先到下游。
顺序消费可以保证吗?------》全局顺序不可能,只能保证局部顺序。
如何实现顺序消费?
以订单为例,将不同的订单分配到不同的queue中,让某一个订单的消息固定分配到一个queue中,可以采用固定的订单号hash然后对queue长度取模,这样每个订单的消息就按顺序发送了,还必须要保证下游单线程消费数据,如果是多线程的话,会出现和之前一样类似的问题,多线程不能按照预想的顺序去消费。