![](https://img-blog.csdnimg.cn/225c3811502a476488cd9615624ee59e.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
RabbitMQ
文章平均质量分 95
RabbitMQ
汪了个王
学习知识,目光坚毅
展开
-
一文搞懂 RabbitMQ 延时队列(订单定时取消为例)
1. 死信及死信队列1.1 什么是死信一般来说,生产者将消息投递到队列中,消费者从队列取出消息进行消费,但某些时候由于特定的原因导致队列中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信(Dead Letter),所有的死信都会放到死信队列中。为什么为有死信?消息变成死信一般是以下三种情况:消息被拒绝,即basicReject/basicNack,并且设置 requeue 参数为 false,这种情况一般消息丢失 。消息过期(TTL),TTL全称为Time-To-Live,表示的原创 2022-02-24 23:20:26 · 5866 阅读 · 1 评论 -
RabbitMQ 消息确认机制、补偿机制、消息幂等性实践
1. 场景先看这么几个面试题:如何保证消息的可靠性投递?即如何确定消息是否发送成功?如果失败如何处理(补偿机制)?如何保证消息不被重复消费?或者说,如何保证消息消费时的幂等性?2. 消息的可靠性投递消息确认消息确认包括主要生产者发送确认和消费者接收确认,因为发送消息的过程中我们是无法确认消息是否能路由等,一旦消息丢失我们就无法处理,所以需要确认消息,避免消息丢失。2.1 生产者确认我们知道生产者与消费者完全隔离的,不做任何配置的情况下,生产者是不知道消息是否真正到达 RabbitMQ,原创 2022-02-23 21:41:10 · 2672 阅读 · 2 评论 -
万字教程!RabbitMQ从入门到实战
大纲什么是消息队列Message Queue(MQ),消息队列中间件。很多人都说:MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是——MQ 是异步的,用来解耦的,但是这个只是 MQ 的效果而不是目的。MQ 真正的目的是为了通讯,屏蔽底层复杂的通讯协议,定义了一套应用层的、更加简单的通讯协议。一个分布式系统中两个模块之间通讯要么是 HTTP,要么是自己开发的 TCP,但是这两种协议其实都是原始的协议。为什么消息中间件不直接使用 HTTP 协议?HTTP 协议很难实现两端原创 2021-10-20 21:27:48 · 726 阅读 · 0 评论