MQ如何解决消息的顺序性

一、消息的顺序性

1、延迟队列:设置一个全局变量index,根据实际情况一次按照index++的逻辑一次给消息队列设置延迟时间段,可以是0.5s,甚至1s;

弊端:如果A,B,C..消息队列消费时间不一致或者出现网络延迟,就会存在后者比前者先消费完的场景;

2、统一消费端:当A消费成功后,通过ACK或者consummer-success通知B进行消费

弊端:降低了系统的吞吐量,需要更多的异常处理机制

3、RocketMQ采用轮询所有队列的方式来确定消息被发送到哪一个队列(负载均衡),比如下面示例中,订单号相同的的消息会被先后发送到同一队列中:

MQ如何解决消息的顺序性

在获取到路由信息以后,会根据MessageQueueSelector实现的算法来选择一个队列,同一个OrderId获取到的肯定是同一个队列

MQ如何解决消息的顺序性
  
 
上一篇:MySql 三大知识点——索引、锁、事务


下一篇:如何保证MQ的顺序性?比如Kafka