当前位置: 首页 > web >正文

RabbitMQ 高级特性之事务

1. 简介

与 MySQL、Redis 一样,RabbitMQ 也支持事务。事务中的消息,要么全都发送成功,要么全部发送失败,不会出现一部分成功一部分失败的情况。

2. 使用事务发送消息

spring 中使用 RabbitMQ 开启事务需要两步:

第一步:配置 RabbitTemplate

使用下面这段代码,将 RabbitTemplate 的 transactional 设置为 true:

    @Bean("transRabbitTemplate")public RabbitTemplate transRabbitTemplate(ConnectionFactory connectionFactory) {RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);rabbitTemplate.setChannelTransacted(true);return rabbitTemplate;}

第二步:在使用 @Transactional注解:

    @Transactional //开启事务@RequestMapping("/trans")public String trans() {transRabbitTemplate.convertAndSend("", Constants.TRANS_QUEUE, "trans 1");transRabbitTemplate.convertAndSend("", Constants.TRANS_QUEUE, "trans 2");int num = 3 / 0;transRabbitTemplate.convertAndSend("", Constants.TRANS_QUEUE, "trans 3");return "消息发送成功";}

在上面的代码中,存在一处异常,当运行程序后,由于使用了事务,那么这三条消息应该都不会进入队列中。

代码运行结果如下:

可以看到,trans.queue 队列中没有消息存在。

http://www.xdnf.cn/news/15088.html

相关文章:

  • FPGA加速HMI实时渲染:复杂图形处理的并行计算方案
  • 【macOS】【Swift】【RTF】黑色文字在macOS深色外观下看不清的解决方法
  • 5.注册中心横向对比:Nacos vs Eureka vs Consul —— 深度解析与科学选型指南
  • 字体 Unicode 区块字符展示 PDF 生成器
  • MySQL 09 普通索引和唯一索引
  • 5N70-ASEMI电源管理领域专用5N70
  • 前端业务监控系统,异常上报业务,异常队列收集,异常捕获
  • 【Unity】MiniGame编辑器小游戏(十)连连看【Link】
  • C#基础篇(11)泛型类与泛型方法详解
  • UI前端与数字孪生结合实践探索:智慧物流的仓储优化与管理系统
  • 大数据在UI前端的应用深化:用户行为模式的挖掘与预测性分析
  • 原型与原型链到底是什么?
  • Linux驱动学习day20(pinctrl子系统驱动大全)
  • 自动驾驶决策与规划
  • 【Kafka】登录日志处理的三次阶梯式优化实践:从同步写入到Kafka多分区批处理
  • 【PDF提取内容改名】批量提取pdf多个指定区域内容到excel表格的操作步骤和方法
  • 制作MikTex本地包可用于离线安装包
  • doris2.1.8连接报错ERROR 1203 (42000): Reach limit of connections解决办法
  • 冷冻电镜重构的GPU加速破局:从Relion到CryoSPARC的并行重构算法
  • 前端UI逻辑复杂可以用什么设计模式
  • 由 DB_FILES 参数导致的 dg 服务器无法同步问题
  • CVE-2025-32463复现
  • 在overleaf中使用bibtex格式引用文献
  • 自动化测试报告优化:jenkins+jmeter定制化HTML报告生成
  • QT 第八讲 --- 控件篇 Widget(三)界面系列
  • 米思齐2.0 3.0 mixly arduino 编程软件下载安装及详情使用指南 导入库文件方法 支持8266 esp32
  • 宇树 G1 部署(一)——综述
  • 如何将华为手机中的照片传输到电脑
  • Unreal引擎——动画系统详解-其二
  • 2025年INS SCI2区,灵活交叉变异灰狼算法GWO_C/M+集群任务调度,深度解析+性能实测