数据的丢失问题可能出现在生产者、MQ服务器、消费者中,以RabbitMQ和Kafka为例来分析一下。

RabbitMQ

生产者弄丢了数据

生产者将数据发送到RabbitMQ的时候,可能数据就在半路给搞丢了,因为网络问题等都有可能。可以用RabbitMQ提供的事务功能,生产者发送数据之前开启RabbitMQ事务channel.txSelect() ,然后发送消息,如果消息没有成功被RabbitMQ接收到,生产者会收到异常报错,此时就可以回滚事务channel.txRollback() ,然后重试发送消息。如果收到了消息,那么可以提交事务channel.txCommit() 。

try {// 通过工厂创建连接connection = factory.newConnection();// 获取通道channel = connection.createChannel();// 开启事务channel.txSelect();// 这里发送消息channel.basicPublish(exchange, routingKey, MessageProperties.PERSISTENT_TEXT_PLAIN, msg.getBytes());// 模拟出现异常int result = 1 / 0;// 提交事务channel.txCommit();
} catch (IOException | TimeoutException e) {// 捕捉异常,回滚事务channel.txRollback();
}

RabbitMQ事务机制(

MQ消息队列数据丢失问题相关推荐

  1. 阿里云ACE共创空间——MQ消息队列产品测试

    一.产品背景 消息队列是阿里巴巴集团自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息订阅和发布.消息轨迹查询.定时(延时)消息.资源统计.监控报警等一系列消息云服务,是企业级互联网架 ...

  2. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  3. MQ消息队列产品测试

    2019独角兽企业重金招聘Python工程师标准>>> 一.产品背景 消息队列是阿里巴巴集团自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息订阅和发布.消息轨迹查询 ...

  4. MQ(消息队列)常见的应用场景解析

    MQ(消息队列)常见的应用场景解析 原文:MQ(消息队列)常见的应用场景解析 前言 提高系统性能首先考虑的是数据库的优化,之前一篇文章<数据库的使用你可能忽略了这些>中有提到过开发中,针对 ...

  5. PHP面试要点——MQ消息队列

    MQ消息队列 常见的消息队列有RabbitMQ.kafka.redis RabbitMQ RabbitMQ是使用Erlang编写的一个开源消息队列,本身支持很多协议,实现了AMQP协议,重量级的.实现 ...

  6. MQ消息队列中间件:

    MQ消息队列中间件: 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发信息,不需要马上回复. 同步调用的优点: 时效性较强,可以立即得到结果 同步调用的问题: ...

  7. java使用mq教程,Java语言快速实现简单MQ消息队列服务

    使用 JAVA 语言自己动手来写一个MQ (类似ActiveMQ,RabbitMQ) 主要角色 首先我们必须需要搞明白 MQ (消息队列) 中的三个基本角色 Producer Broker Consu ...

  8. MQ消息队列的使用(邮件的发送)

    MQ消息队列的使用(邮件的发送) MQ消息队列 A:利用Maven加载相关的jar报,当然也可以自己写MQ,用来生产者的消息 jms交给spring进行管理 C.生产者配置 D.创建生产者消息转换器 ...

  9. MQ消息队列详解、四大MQ的优缺点分析

    MQ消息队列详解.四大MQ的优缺点分析 前言 面试题切入 面试官心理分析 面试题剖析 ①为什么要使用MQ 系统解耦 异步调用 流量削峰 消息队列的优缺点 四大主流MQ(kafka.ActiveMQ.R ...

最新文章

  1. 阅读豆丁网----基于模型的混合多目标算法的研究
  2. 学习webpack记录(一)
  3. Yii框架中使用SRBAC作为权限管理模块时遇到的问题
  4. 【软件安装】sublime安装方法
  5. javaWEB开发中get方式请求的乱码问题解决
  6. GTID的常见错误和处理方法
  7. servlets_jQuery Ajax – Servlets集成:构建完整的应用程序
  8. 获取当前scn号scn1_11.1.1.2 基于SCN的查询(AS OF SCN)
  9. API开放平台基于accessToken实现
  10. SLIC超像素分割详解(一)(二)(三)
  11. 超详细的测试理论基础知识
  12. 双路服务器5100芯片组,华硕推AMD双路12核平台服务器主板
  13. 什么是java的类加载器_JAVA-大白话探索JVM-类加载器(一)
  14. 计算机网络基础 之三:数据链路层
  15. 没有智商,善良有个P用
  16. Proxy是代理,Reflect是干嘛用的?
  17. 一个程序员眼中的北京和上海
  18. 上有政策,下有对策——如何继续下载VeryCD资源
  19. 数据恢复实战技术总结
  20. Roadstar.ai CEO佟显乔:我们要做无人车领域的滴滴 还要改变世界

热门文章

  1. 基于springboot的公司人事管理系统
  2. Labelmx条码软件如何制作试卷答题卡条码标签
  3. Direct3D 与 OpenGl
  4. 虚拟机克隆以及IP,MAC地址的修改
  5. Open3d从RGBD生成点云、mesh
  6. 各种神经网络的应用领域,脉冲神经网络发展前景
  7. 人类肠道核心菌属——韦荣氏球菌属(Veillonella)
  8. 2021年12月电子学会图形化一级编程题解析含答案:下雨
  9. 【数字逻辑】如何根据真值表的内容写出对应的逻辑关系式?
  10. Angular4简介