首页 > 智能硬件 > 正文内容

mq如何保证顺序消费

时间:2024-08-25 01:00:32

mq如何保证消费顺序消费

topic和queue的对应关系是一个topic拥有多个queue,当producer往broken发送消息时,消息会存储在topic下的不同队列中,而一个队列只会被一个consumer消费,这样消息户被均衡负载到不同的队列下,也就是会被多个消费者并行消费,顺序就无法保证了。该怎么办呢?答案是把需要顺序消费的消息发送到同一台broker server下的同一个队列,而这些消息也只会被同一个消费者消费,这样就可以保证严格的顺序了,如下图:

1. 消息要有顺序,首先得保证producer发送消息有顺序,如上图msg1,msg2,msg3发送到queue0是要有顺序的,只要producer等待前面的消息发送成功,在发送后面的消息就完全可以保证了,

2. 假设msg1发送给consumer1,消费没有响应,该怎么办呢?是继续发送msg2还是重新发送msg1,一般为了保证消息一定被消费,肯定会选择重发msg1到下一台消费者consumer2。

3. 消费端1没有响应Server时有两种情况,一种是msg1确实没有到达(数据在网络传送中丢失),另外一种消费端已经消费msg2且已经发送响应消息,只是MQ Server端没有收到。如果是第二种情况,重发msg1,就会造成msg1被重复消费。也就引入了消息重复问题,那就要幂等了。

版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益, 请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。
标签:智能硬件

科技之家 广州小漏斗信息技术有限公司 版权所有 佳绩网提供支持 粤ICP备20006251号