[RabbitMQ] 保证消息可靠性的三大机制------消息确认,持久化,发送方确认

??个人主页:https://blog.youkuaiyun.com/2301_80050796?spm=1000.2115.3001.5343
??热门专栏:
?? Java基本语法(97平均质量分)https://blog.youkuaiyun.com/2301_80050796/category_12615970.html?spm=1001.2014.3001.5482
?? Collection与数据结构 (92平均质量分)https://blog.youkuaiyun.com/2301_80050796/category_12621348.html?spm=1001.2014.3001.5482
??线程与网络(96平均质量分) https://blog.youkuaiyun.com/2301_80050796/category_12643370.html?spm=1001.2014.3001.5482
??MySql数据库(93平均质量分)https://blog.youkuaiyun.com/2301_80050796/category_12629890.html?spm=1001.2014.3001.5482
??算法(97平均质量分)https://blog.youkuaiyun.com/2301_80050796/category_12676091.html?spm=1001.2014.3001.5482
?? Spring(97平均质量分)https://blog.youkuaiyun.com/2301_80050796/category_12724152.html?spm=1001.2014.3001.5482
??Redis(97平均质量分)https://blog.youkuaiyun.com/2301_80050796/category_12777129.html?spm=1001.2014.3001.5482
??RabbitMQ(97平均质量分) https://blog.youkuaiyun.com/2301_80050796/category_12792900.html?spm=1001.2014.3001.5482
感谢点赞与关注~~~
在这里插入图片描述

目录

1. 消息确认

1.1 消息确认机制

生产者发送消息之后,到达消费端之后,可能会有以下情况:一种是消息处理成功,一种是消息处理异常.
在这里插入图片描述
如果消息处理异常的情况下,这条消息就会被删除,此时就会造成消息的丢失.此时我们就需要保证消息可靠地到达消费者,RabbitMQ为此提供了消息确认的机制.
消费者在订阅队列的时候,可以之地宁autoAck参数,根据这个参数,消息确认的机制可以分为一下的两种:

  • 自动确认,autoAck参数为true.RabbitMQ的队列会把发送出去的消息自动置为确认,然后自动从内存或者硬盘中删除,而不管消费者是否真正地消费到了这些消息.
  • 手动确认,autoAck参数为false.RabbitMQ的队列会等待消费者显示调用Basic.Ack命令,回复确认信号之后才从内存或者硬盘中进行删除.
    对于手动确认的队列中的消息而言,队列中的消息分为两部分:
    是等待投递给消费者的消息.
    二是已经投递给消费者,但是还没有收到消费者确认信号的消息.
    如果RabbitMQ一直没有收到消费者的确认消息信号,则RabbitMQ会安排这个消息重新进入队列,等待投递个下一个消费者,当然下一个消费者还是有可能是原来的消费者.
    在这里插入图片描述

1.2 手动确认方法

消费者在收到消息之后,可以选择确认,也可以选择直接拒绝或者跳过,RabbitMQ也提供了不同的确认应答的方式.一共有以下三种:

  1. 肯定确认: Channel.basicAck(long deliveryTag, boolean multiple)
    这种方法表示的是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值