在了解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如何保证消息的可靠性相关推荐

  1. RabbitMQ(十):RabbitMQ 如何保证消息的可靠性

    一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失. 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息 ...

  2. Rabbitmq专题:rabbitMQ如何保证消息的可靠性投递?如何防止消息丢失

    文章目录 1. 消息可能出现丢失的情况 2. 生产者如何保证消息的可靠性投递 2.1 消息落库打标 + confirm机制 2.2 消息幂等性如何保证? 2.3 延时消息确认 3. rabbitMQ服 ...

  3. RabbitMQ 如何保证消息的可靠性

    一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失. 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息 ...

  4. RabbitMQ消息中间件(二) RabbitMQ如何保证消息的可靠性投递

    RabbitMQ如何保证消息投递的准确性? 生产端的可靠性投递: 1.保证消息成功发送 2.保证MQ节点成功接收 3.发送端收到MQ节点(Broker)确认应答 4.完善的消息补偿机制 BAT等大厂解 ...

  5. 给你1分钟,回答下RabbitMQ如何保证消息不丢?

    一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失. 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息 ...

  6. 消息队列面试 - 如何保证消息的可靠性传输?

    消息队列面试 - 如何保证消息的可靠性传输? 面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条 ...

  7. IM即时通讯-N-如何保证消息的可靠性展示

    结论先行 客户端如何在推拉结合的模式下保证消息的可靠性展示? 原则: server拉取的消息一定是连续的 原则: 端侧记录的消息的连续段有两个作用: 1. 记录消息的连续性, 即起始中间没有断层, 2 ...

  8. SpringBoot+RabbitMQ ,保证消息100%投递成功并被消费(附源码)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:rrd.me/f2cxz 一.先扔一张图 说明: 本文涵盖了 ...

  9. rabbitmq消费固定个数消息_SpringBoot+RabbitMQ (保证消息100%投递成功并被消费)

    作者:wangzaiplus https://www.jianshu.com/p/dca01aad6bc8 一.先扔一张图 说明:本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认机 ...

最新文章

  1. MySQL 导致 CPU 消耗过大,如何优化
  2. 防火墙(二)SNAT和DNAT
  3. Mac安装docker+nginx+挂载文件详细体验
  4. 记住这9点,SCI论文结果轻松写
  5. 搞工程和搞电子的人摆摊能做什么?
  6. oracle lms进程 内存,Oracle RAC 内存融合(Cache Fusion)
  7. 腾讯智慧出行和现代汽车集团创新中心(北京)正式建立创新战略合作伙伴关系
  8. 【音频处理】如何“认识”一个滤波器?
  9. C++ 现代编程风格速查表
  10. python爬取百度迁徙动态图_python爬虫动态爬取百度迁徙
  11. spoon mysql_spoon(kettle)基本配置(连接Mysql和Oracle)
  12. A股个股财报数据更全面啦!—股票数据远程下载服务升级
  13. 计算机显卡的专业术语怎么说,电脑显卡知识你知多少?显卡知识普及
  14. 计算机主机配置单2020,2020电脑配置清单
  15. python bind_all_tkinter事件之bind
  16. 微信支付服务端自动对账
  17. 关于Adobe Photoshop 无法显示原始数据,内容太大。
  18. 年末了,也来一个年度自我总结
  19. EEG电流源密度分析(CSD)-容积传导效应-脑电Laplacian滤波
  20. 华科计算机考研复试往年机试题

热门文章

  1. qt 练习 题目 7 网络 查询 股票实时数据
  2. 利用百度API进行视频翻译制作
  3. Andriod电子词典查询功能的实现
  4. Android 开发:通信篇-TCP客户端
  5. 获取PancakeSwap Price
  6. 人工智能中的Web端编程
  7. 【优化选址】基于遗传算法求解分布式电源的选址定容问题附matlab代码
  8. 干货分享:大数据可视决策关键技术有哪些?分析篇
  9. Google Earth Engine(GEE)——Sentinel2 TOA反射率数据去云
  10. 【干货】绕过校园网认证实现轻松上网