共享订阅能实现消息顺序性吗

从均衡策略配置参数来看,使用sticky或hash可以保证有序,但是如果组内有消费者故障下线了,这个情况下,两种类型的策略,服务端分别是如何处理的呢?会不会导致消息乱序

sticky 和 hash 策略下,当一个正在消费的共享订阅者下线后,EMQX 会在其他订阅者里随机选择一个继续进行消息投递。
不会出现消息乱序。

感谢解答。还有一个疑问就是,hash的模式下,在有共享订阅者下线之后,EMQX是不是会将新到的消息按当前的订阅者数目重新hash取模之后来投递呢?那会不会有一种情况,同一个clientId一条消息"123",投递到1号订阅者,此时有订阅者下线,这个clientId又发了一条消息"456",那这个消息是不是就到其他订阅者了。如果前面的消息"123"业务端还没有处理完,消息"456"先被处理完了,然后就乱序了,会不会有这种情况呢?

“456” 是会到其他订阅者的。

mqtt 协议只能保证 “123” 一定先于 “456” 进行消息投递。
至于 “123” 和 “456” 谁先被处理,谁先被处理完,这依赖于业务的实现。

考虑更极端的情况
“123” 先被发出给第一个共享订阅者 A,"456"后被发出给共享订阅者 B。但受限于网络延迟/带宽/设备处理速度,在绝对时间尺度上来看,“456” 先于 “123” 到达它的订阅者。此时如果要保证它们的处理顺序,就一定是依赖于业务端的实现,例如给消息带上时间戳,或使用锁等其他手段。

了解,非常感谢