為什么會有順序消費的需求?
-
業務場景需要,比如一個訂單的流程,從創建到支付到發貨到評價,需要按照順序進行。
-
有可能會有網絡波動。
-
topic可能分為多個queue,那queue的分配是隨機的,不同queue之間的消費速率不一樣,所以可能導致履約成功的消息最先到下游。
順序消費可以保證嗎?------》全局順序不可能,只能保證局部順序。
如何實現順序消費?
以訂單為例,將不同的訂單分配到不同的queue中,讓某一個訂單的消息固定分配到一個queue中,可以采用固定的訂單號hash然后對queue長度取模,這樣每個訂單的消息就按順序發送了,還必須要保證下游單線程消費數據,如果是多線程的話,會出現和之前一樣類似的問題,多線程不能按照預想的順序去消費。