MQ高级--

1.发送者的可靠性

1.1生产者重连

有时候由于网络波动,可能会出现客户端连接MQ失败的情况。通过配置我们可以开启连接失败后的重连机制
在这里插入图片描述

1.2生产者确认

RabbitMQ了Publisher Confirm和Publisher Return两种确认机制。开启确认机制后,在MQ成功收到消息后会返回确认消息给生产者。返回的结果有以下几种情况:
1.消息投递到了MQ,但是路由失败。此时会通过Publisher Return返回路由异常原因,然后返回 ACK,告知投递成功。
2.(临时)消息投递到了MQ,并且入队成功,返回ACK,告知投递成功。
(持久)消息投递到了MQ,并且入队完成持久化,返回ACK,告知投递成
其他情况都会返回NACK,告知投递失败。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

------------------------------------------------------------------

2.MQ的可靠性

在默认情况下,RabbitMQ会将接收到的信息保存在内存中以降低消息发送的延迟,然而会导致乱哥哥问题
1.一旦MQ待机,内存中的消息会丢失
2.内存空间有限,当消费者故障或处理慢时,会导致消息挤压,引发MQ阻塞

数据持久化

交换机持久化,队列持久化,消息持久化

Lazy Queue

从RabbitMQ的3.6.0版本开始,就增加了Lazy Queue的概念,也就是惰性队列。其特征如下:
1.接收到消息后直接存入磁盘而非内存(内存只保留最近的消息,默认2048条)
2.消费者要消费消息时才会从磁盘中读取并加载到内存
3.支持百万条的消息存储
在3.12版本后,所有队列都是Lazy Queue模式,无法更改。

3.消费者可靠性

3.1 消费者确认机制

为了确认消费者是否成功处理消息,RabbitMQ提供了消费者确认机制(Consumer Acknowledgement)。当消费者处理消息结束后,应该向RabbitMQ发送一个回执,告知RabbitMQ自己消息处理状态。回执有三种可选值:
1.ack:成功处理消息,RabbitMQ从队列中删除该消息
2.nack:消息处理失败,RabbitMQ需要再次投递消息
3.reject:消息处理失败并拒绝该消息,RabbitMQ从队列中删除该消息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2业务幂等性

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值