MQ常见问题

文章探讨了在MQ系统中可能出现的消息丢失、重复消费和顺序消费问题,并提出了相应的解决方案。对于消息丢失,建议使用消息确认机制和消息持久化;为防止重复消费,可以通过生成唯一ID来识别和过滤重复消息;解决顺序消费问题,可以采用全局或部分顺序策略,限制生产者和消费者的线程数量和消息队列结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、消息丢失

1、 生产者丢消息
场景:
生产者在将数据发送到MQ的时候,可能由于网络等原因造成消息投递失败。

解决方法:
当MQ接收到消息之后,给生产者发送确认信息,若生产者等待MQ的确认信息超时,则再次发送消息。

2、MQ自身丢消息
场景:
MQ接受到消息后,还未将消息转发给消费者时,MQ服务宕机等原因造成消息丢失。

解决方法:
消息持久化保存。

3、消费者丢消息
场景:
消费者刚接收到消息还没处理完成,消费者服务宕机等原因造成消息丢失。

解决方法:
当消费者消费完消息后,给MQ发送确认信息,若MQ等待消费者的确认信息超时,则再次发送消息。

二、重复消费

场景:

  1. MQ接收到消息后,因为网络等原因,确认信息发送延迟,此时生产者等待超时,再次发送了消息。
  2. 消费者消费完消息后,因为网络等原因,确认信息发送延迟,此时MQ等待超时,再次发送了消息。

解决方案:
给每个消息生成一个唯一id,MQ和消费者每次处理消息时,根据id判断是否已处理过该消息。

三、顺序消费

消息乱序的原因:
消息生产:多个生产者或一个生产者内多个线程一起生产消息;
消息消费:多个消费者或一个消费者内多个线程一起消费消息。

解决方案:

  1. 全局顺序:所有消息都按照顺序生产、消费
    在这里插入图片描述
    只有一个队列;一个生产者,单线程生产消息;一个消费者,单线程消费消息。

  2. 部分顺序:同一类的消息按照顺序生产、消费
    同一类的消息进入一个队列;
    消息生产:
    (1)生产者,单线程生产一类消息
    (2)生产者,每个线程生产一类消息
    消息消费:
    (1)消费者,单线程消费一类消息
    (2)消费者,每个线程消费一类消息
    在这里插入图片描述
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值