一、Rabbitmq的流程图

二、出现消息丢失的三个可能

  A:写消息的过程,消息都没到rabbitmq,在网络传输过程就丢了;或者是消息到了rabbitmq,但是人家内部出错了没保存下来

     例子:
1、channel.confirm // 先把channel设置成confirm的模式
2、发一个消息
3、生产者实现ConfirmListener接口handleAck()和handleNack()方法
/**
** handleAck RabbitMQ消息接收成功的方法,成功后业务可以做的事情
** 发送端投递消息前,需要把消息先存起来,比如用KV存储,接收到ack后删除
**/
void handleAck(long deliveryTag, boolean multiple)
throws IOException; //handleNack RabbitMQ消息接收失败的通知方法,用户可以在这里重新投递消息
void handleNack(long deliveryTag, boolean multiple)
throws IOException; B:Rabbitmq接收到消息之后先暂存在自己的内存里,结果消费者还没来得及消费,rabbitmq自己挂掉了就导致暂存在内存里得数据就就搞丢 持久化queue,exchange均设置为 durable=True 持久化消息message:delivery_mode = 2 C:消费者消费到了这个消息,但是还没来得及处理自己就挂掉了,但是rabbitmq以为这个消息者已经处理完了 解决方案:使用手动ACK

三、解释图

Rabbitmq防止消息的丢失的更多相关文章

  1. 如何保证RabbitMQ的消息不丢失及其背后的原理

    一.消息为什么丢失 RabbitMQ默认情况下的交换机和队列以及消息是非持久化的,也就是说在服务器重启或者宕机恢复后,之前创建的交换机和队列都将不复存在,之前未消费的消息也就消失不见了.原因在于每个队 ...

  2. RabbitMq如何确保消息不丢失

    上篇写了掌握Rabbitmq几个重要概念,从一条消息说起,这篇来总结关于消息丢失让人头痛的事情.网络故障.服务器重启.硬盘损坏等都会导致消息的丢失.消息从生产到消费主要结果以下几个阶段如下图. ①生产 ...

  3. RabbitMQ 保证消息不丢失

    参考:https://www.imooc.com/article/49814 发送消息的时候,加上messageId字段,数据库记录消息日志表 ,插入的时候为发送中 当收到消息的时候,更改为已发送 , ...

  4. rabbitmq保证数据不丢失方案

    rabbitmq如何保证消息的可靠性 1.保证消息不丢失 1.1.开启事务(不推荐) 1.2.开启confirm(推荐) 1.3.开启RabbitMQ的持久化(交换机.队列.消息) 1.4.关闭Rab ...

  5. rabbitmq之确保消息不丢失

    1.背景引入 在使用消息中间件(rabbitmq)时,令开发者最头痛的就是防止消息丢失问题,而消息丢失可能发生的位置主要为三种,分别为(1)消息发送到MQ中消费者消费未成功时突然宕机:(2)消息发送到 ...

  6. RabbitMQ防止消息丢失

    转载请注明出处 0.目录 RabbitMQ-从基础到实战(1)— Hello RabbitMQ RabbitMQ-从基础到实战(3)— 消息的交换 1.简介 RabbitMQ中,消息丢失可以简单的分为 ...

  7. RabbitMQ 如何保证消息不丢失?

    RabbitMQ一般情况很少丢失,但是不能排除意外,为了保证我们自己系统高可用,我们必须作出更好完善措施,保证系统的稳定性. 下面来介绍下,如何保证消息的绝对不丢失的问题,下面分享的绝对干货,都是在知 ...

  8. 基于springboot工程浅谈整合rabbitmq怎么样防止消息发送mq不丢失和消费mq的消息防止丢失

    本文只针对springboot整合rabbitmq的消息防丢失,话不多说,上干货.... 设置发送mq消息不丢失实现思路 执行的方案: 第一步,要对队列,消息以及交换机进行持久化操作(保存到物理磁盘中 ...

  9. RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得

    前言 首先说一点,企业中最常用的实际上既不是RocketMQ,也不是Kafka,而是RabbitMQ. RocketMQ很强大,但主要是阿里推广自己的云产品而开源出来的一款消息队列,其实中小企业用Ro ...

  10. 如何保证RabbitMQ的消息不会丢失?怎么保证RabbitMQ的可靠性?

    生产者: 原因: 由于网络原因导致消息发送失败,消息队列没有接收到生产者发送的消息,但生产者认为消息发送成功. 解决办法: transaction模式:事务模式:开启事务,发送消息,成功提交事务,失败 ...

随机推荐

  1. 【转载】Geojson常用工具,收藏备用

    收集了网上几个比较好用的网站,收藏备用 1.Geojson数据下载器:http://datav.aliyun.com/tools/atlas/#&lat=33.54139466898275&a ...

  2. 面试题:区分List中remove(int index)和remove(Object obj)

    面试题:区分List中remove(int index)和remove(Object obj) package com.atguigu.exer;import org.junit.Test;impor ...

  3. [文件格式/数据存储] Parquet:开源、高效的列式存储文件格式协议

    序:缘起 => 用 java 读取 parquet 文件 生产环境有设备出重大事故,又因一关键功能无法使用,亟需将生产环境的原始MQTT报文(以 parquet 文件格式 + zstd 压缩格式 ...

  4. GPU虚拟化技术简介:实现高性能图形处理的灵活部署

    本文分享自天翼云开发者社区<GPU虚拟化技术简介:实现高性能图形处理的灵活部署>,作者:z****n GPU虚拟化技术是一项重要的创新,通过将物理GPU划分为多个虚拟GPU,实现多用户共享 ...

  5. 单用户模式启动 CentOS/RHEL 7/8 的三种方法

    单用户模式启动 CentOS/RHEL 7/8 的三种方法   单用户模式,也被称为维护模式,超级用户可以在此模式下恢复/修复系统问题. 通常情况下,这类问题在多用户环境中修复不了.系统可以启动但功能 ...

  6. 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异

    深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异 数据库统计信息的作用 在数据库系统中,查询优化在决定应用程序性能方面起着至关重要的作用. 高效的查询依赖于最新的数 ...

  7. ABB机器人IRB 6700维修保养技巧

    通过与子锐机器人维修保养服务定制合理的机器人保养工作,可以确保ABB机器人IRB 6700的持续稳定运行,延长其使用寿命,为企业的生产提供有力保障. 一.ABB机器人IRB 6700日常检查与维护 外 ...

  8. docker下安装Harbor

    安装docker-compose # 安装docker-compose curl -L https://github.com/docker/compose/releases/download/1.18 ...

  9. 【MathType】word2016数学公式编号

    问题 毕业论文排版中,对数学公式需要类似(3-1)的格式. 解决技巧 在写论文初稿的时候,先不要于公式的编号,先给它编一个号,比如(3) (2) (4)的. 最后写完了以后,再再添加section , ...

  10. Windows和Ubuntu间TCP连接测试

    起因是想在Ubuntu上用Synergy,但是发现爱你怎么都连不上.鼓捣了半天发现似乎Ubuntu监听,Windows测试TCP连接总是不成功,反之却能成功,大概问题就在这,尚未解决先记录一下. 基本 ...