RabbitMQ如何保证消息的可靠性
在了解RabbitMQ消息可靠性之前,先来了解一下RabbitMQ整个消息投递的路径:
producer ——> exchange ——> queue ——> consumer
RabbitMQ保证消息的可靠性主要分为两个部分:
(1)消息投递(生产者向MQ发送消息,确保MQ接收到消息)
(2)消息确认(消费者签收消息)
1、消息投递
在使用RabbitMQ的时候,作为消息发送方拒绝任何消息丢失或者投递失败场景,RabbitMQ为我们提供了两种方式来保证消息的投递可靠性。
- confirm确认模式
- return退回模式
confirm确认模式
(1)消息从producer——>exchange,会回调confirmCallback,重写confirm方法有3个参数:
correlationData:相关配置信息
ack:exchange交换机是否成功收到信息,true成功,false失败
cause:失败原因
return退回模式
消息从exchange——>queue,当交换机到队列路由失败时才会执行returnCallback
步骤:
代码:
2、消息确认
Consumer ack 消费者确认
ack指Acknowledge,确认,表示消费者收到消息后的确认方式。
有3种确认方式:
- 自动确认:acknowledge="none"
- 手动确认:acknowledge="manual"
- 根据异常情况确认:acknowledge="auto"
其中自动确认是指,一旦消息被consumer收到,则自动确认收到,并将相应的message从RabbitMQ缓存中移除,但在实际业务处理中,很可能消息接收到,业务处理出现异常,那么该消息就会丢失。如果设置了手动确认模式,则在业务处理成功后,调用channel.basicAck()手动签收,如果出现异常,则调用channel.basicNack()方法,让其自动重新发送消息。
步骤:
代码:
RabbitMQ如何保证消息的可靠性相关推荐
- RabbitMQ(十):RabbitMQ 如何保证消息的可靠性
一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失. 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息 ...
- Rabbitmq专题:rabbitMQ如何保证消息的可靠性投递?如何防止消息丢失
文章目录 1. 消息可能出现丢失的情况 2. 生产者如何保证消息的可靠性投递 2.1 消息落库打标 + confirm机制 2.2 消息幂等性如何保证? 2.3 延时消息确认 3. rabbitMQ服 ...
- RabbitMQ 如何保证消息的可靠性
一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失. 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息 ...
- RabbitMQ消息中间件(二) RabbitMQ如何保证消息的可靠性投递
RabbitMQ如何保证消息投递的准确性? 生产端的可靠性投递: 1.保证消息成功发送 2.保证MQ节点成功接收 3.发送端收到MQ节点(Broker)确认应答 4.完善的消息补偿机制 BAT等大厂解 ...
- 给你1分钟,回答下RabbitMQ如何保证消息不丢?
一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失. 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息 ...
- 消息队列面试 - 如何保证消息的可靠性传输?
消息队列面试 - 如何保证消息的可靠性传输? 面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条 ...
- IM即时通讯-N-如何保证消息的可靠性展示
结论先行 客户端如何在推拉结合的模式下保证消息的可靠性展示? 原则: server拉取的消息一定是连续的 原则: 端侧记录的消息的连续段有两个作用: 1. 记录消息的连续性, 即起始中间没有断层, 2 ...
- SpringBoot+RabbitMQ ,保证消息100%投递成功并被消费(附源码)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:rrd.me/f2cxz 一.先扔一张图 说明: 本文涵盖了 ...
- rabbitmq消费固定个数消息_SpringBoot+RabbitMQ (保证消息100%投递成功并被消费)
作者:wangzaiplus https://www.jianshu.com/p/dca01aad6bc8 一.先扔一张图 说明:本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认机 ...
最新文章
- MySQL 导致 CPU 消耗过大,如何优化
- 防火墙(二)SNAT和DNAT
- Mac安装docker+nginx+挂载文件详细体验
- 记住这9点,SCI论文结果轻松写
- 搞工程和搞电子的人摆摊能做什么?
- oracle lms进程 内存,Oracle RAC 内存融合(Cache Fusion)
- 腾讯智慧出行和现代汽车集团创新中心(北京)正式建立创新战略合作伙伴关系
- 【音频处理】如何“认识”一个滤波器?
- C++ 现代编程风格速查表
- python爬取百度迁徙动态图_python爬虫动态爬取百度迁徙
- spoon mysql_spoon(kettle)基本配置(连接Mysql和Oracle)
- A股个股财报数据更全面啦!—股票数据远程下载服务升级
- 计算机显卡的专业术语怎么说,电脑显卡知识你知多少?显卡知识普及
- 计算机主机配置单2020,2020电脑配置清单
- python bind_all_tkinter事件之bind
- 微信支付服务端自动对账
- 关于Adobe Photoshop 无法显示原始数据,内容太大。
- 年末了,也来一个年度自我总结
- EEG电流源密度分析(CSD)-容积传导效应-脑电Laplacian滤波
- 华科计算机考研复试往年机试题