3.RabbitMQ中死信交换机 ? (RabbitMQ延迟队列有了解过嘛)
4.RabbitMQ如果有100万消息堆积在MQ , 如何解决(消息堆积怎么解决)
1.RabbitMQ-如何保证消息不丢失?
消息中间件的好处
- 提供了系统之间的异步调用,让服务与服务之间解耦
- 削峰、填谷
场景:
- 异步发送(验证码、短信、邮件…)
- MySQL和Redis , ES之间的数据同步
- 分布式事务
- 削峰填谷
消息发送者(publisher )把消息发送给交换机(exchange),由交换机路由到队列,最后由消费者(consumer)进行消费消息。
出现消息丢失的四种情况:
- 消息未到达交换机
- 消息未到达队列
- 队列中消息丢失
- 消费者未接收到消息
生产者确认机制(解决消息未到达交换机、消息未到达队列问题)
RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后,会返回一个结果(ack)给发送者,表示消息是否处理成功
如果消息发送失败,有两种情况:
- 消息到达交换机失败(publisher-confirm nack)
- 交换机路由到队列失败(publisher-return ack)
消息失败之后如何处理呢?
- 回调方法即时重发(知道哪一个消息发送失败,可以再发)
- 记录日志(如果还是发送失败,可以记录日志,通过查看日志进行补偿)
- 保存到数据库然后定时重发,成功发送后即刻删除表中的数据
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新