生产者丢数据

RabbitMQ提供transaction和confirm模式来确保生产者不丢消息。

transaction机制就是说,发送消息前,开启事务(channel.txSelect()),然后发送消息,如果发送过程中出现什么异常,事务就会回滚(channel.txRollback()),如果发送成功则提交事务(channel.txCommit())。

消息队列丢数据

处理消息队列丢数据的情况,一般是开启持久化磁盘的配置。这个持久化配置可以和confirm机制配合使用,你可以在消息持久化磁盘后,再给生产者发送一个Ack信号。这样,如果消息持久化磁盘之前,rabbitMQ阵亡了,那么生产者收不到Ack信号,生产者会自动重发。

那么如何持久化呢,这里顺便说一下吧,其实也很容易,就下面两步

将queue的持久化标识durable设置为true,则代表是一个持久的队列

发送消息的时候将deliveryMode=2

这样设置以后,即使rabbitMQ挂了,重启后也能恢复数据.

消费者丢数据

消费者丢数据一般是因为采用了自动确认消息模式。这种模式下,消费者会自动确认收到信息。这时rabbitMQ会立即将消息删除,这种情况下,如果消费者出现异常而未能处理消息,就会丢失该消息。

RabbitMQ应对不同阶段丢失消息的处理方案相关推荐

  1. rabbitmq(四)、消息丢失问题

      丢失消息的三种情况:生产者弄丢了数据.RabbitMQ 弄丢了数据.消费端弄丢了数据. 一.生产者弄丢了数据 生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥 ...

  2. 【重难点】【RabbitMQ 02】如何避免消息重复投递和消息重复消费、如何防止消息丢失、如何保证消息的顺序性、如何保证消息队列的可用性

    [重难点][RabbitMQ 02]如何避免消息重复投递和消息重复消费.如何防止消息丢失.如何保证消息的顺序性.如何保证消息队列的可用性 文章目录 [重难点][RabbitMQ 02]如何避免消息重复 ...

  3. RabbitMQ 从入门到精通 消息应答 持久化 交换机 队列 发布确认 集群 等

    RabbitMQ消息队列 RabbitMQ 的概念 RabbitMQ 是一个消息中间件:它接受并转发消息.你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快 ...

  4. RabbitMQ学习总结(六)之消息应答

    作者处于学习阶段,刚刚完成RabbitMQ的学习,作为学生,我会用更通俗的说法,来叙述自己对RabbitMQ的了解.愿各位大佬看到有见解错误的地方和叙述不好的地方,能够帮忙纠正.来帮助大家更加深入的了 ...

  5. 面试官再问我如何保证 RocketMQ 不丢失消息,这回我笑了!

    0x00. 消息的发送流程 一条消息从生产到被消费,将会经历三个阶段: 生产阶段,Producer 新建消息,然后通过网络将消息投递给 MQ Broker 存储阶段,消息将会存储在 Broker 端磁 ...

  6. rabbitmq 启动异常_RabbitMQ:消息发送确认 与 消息接收确认(ACK)

    默认情况下如果一个 Message 被消费者所正确接收则会被从 Queue 中移除 如果一个 Queue 没被任何消费者订阅,那么这个 Queue 中的消息会被 Cache(缓存),当有消费者订阅时则 ...

  7. 消息中间件学习总结(10)——Kafka、RabbitMQ、RocketMQ消息中间件的消息发送性能对比

    引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注. ...

  8. 如何保证 RocketMQ 不丢失消息

    消息的发送流程 一条消息从生产到被消费,将会经历三个阶段: 生产阶段,Producer 新建消息,然后通过网络将消息投递给 MQ Broker 存储阶段,消息将会存储在 Broker 端磁盘中 消息阶 ...

  9. RabbitMQ—发布消息确认和消费消息确认

    目录 序言 消息发布流程 发布消息确认 一.事务使用 二.Confirm发送方确认模式 方式一:普通Confirm模式 方式二:批量Confirm模式 方式三:异步Confirm模式 扩展知识 消费消 ...

最新文章

  1. Android studio快捷键
  2. SQL Server 事务、异常和游标
  3. Dataguard配置前提条件
  4. 大规模运行MongoDB应该知道的10件事
  5. 构造方法注入和设值注入有什么区别?
  6. python 底层原理processpoolexecutor_python 多进程并行编程 ProcessPoolExecutor的实现
  7. 数据开放平台的配置管理
  8. EasyExcel入门使用
  9. 好的软件人员必看的书
  10. jar java classpath_Java ClassLoader和ClassPath
  11. 公式太多,读不懂? 一文带你领略KNN近邻算法~简单易懂
  12. 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > CoAP协议接入 >
  13. 学习【新版的】韦东山嵌入式_day01
  14. Mac SDK环境变量配置
  15. sprintf函数的用法
  16. 【Git】查看改动文件清单
  17. 数据量再大也不怕!笔记本电脑也可以分析 100GB 数据
  18. Linux Bridge的IP NAT细节探析-填补又一坑的过程
  19. 黑科技揭秘:面对海量的文本翻译任务,阿里翻译团队是如何解决的
  20. 回调函数与回调地狱及其解决方法 | JavaScript

热门文章

  1. 使用Mapreduce案例编写用于统计文本中单词出现的次数的案例、mapreduce本地运行等,Combiner使用及其相关的知识,流量统计案例和流量总和以及流量排序案例,自定义Partitioner
  2. Oracle:关于分布式数据库(创建数据库链路,创建触发器)
  3. 【tensorflow】tf.reshape函数说明:重塑张量
  4. 写好的python如何在其它电脑上运行_如何在另一个文件中运行一个python文件?
  5. tablayout 增加数字小标_为TabLayout添加角标的最简单方法
  6. qt连接mysql创建表_Qt编译mysql以及创建表后进行导入操作
  7. pytorch常用函数API简析与汇总——以备查询
  8. 【faster-rcnn】训练自己的数据集时的坑
  9. 整理了一下linux/ubuntu里面卸载软件的方法
  10. 谈谈多层架构和MVC