【RabbitMQ】事务

embedded/2025/3/12 8:17:01/

事务的简单配置及使用

    • 配置事务管理器
    • 声明队列
    • 生产者代码
    • 测试

在这里插入图片描述

RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制.
SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的,要么全部成功,要么全部失败.

配置事务管理器

java">
@Configuration
public class RabbitTemplateConfig {//事务@Bean("transRabbitTemplate")public RabbitTemplate transRabbitTemplate(ConnectionFactory connectionFactory){RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);//设置setChannelTransacted为truerabbitTemplate.setChannelTransacted(true);  return rabbitTemplate;}//配置事务管理器@Beanpublic RabbitTransactionManager rabbitTransactionManager(ConnectionFactory connectionFactory){return new RabbitTransactionManager(connectionFactory);}}

声明队列

java">@Configuration
public class RabbitMQConfig {@Bean("transQueue")public Queue transQueue(){return QueueBuilder.durable(Constant.TRANS_QUEUE).build();}
}

生产者代码

java">@RestController
@RequestMapping("/producer")
public class ProducerController {@Resource(name = "transRabbitTemplate")private RabbitTemplate transRabbitTemplate;@Transactional@RequestMapping("/trans")public String trans(){//1. rabbitTemplate.setChannelTransacted(true);设置事务属性为true//2. 开启@Transactional注解//3. RabbitTransactionManagerSystem.out.println("trans test...");transRabbitTemplate.convertAndSend("",Constant.TRANS_QUEUE, "trans test 1...");int num = 5/0;transRabbitTemplate.convertAndSend("",Constant.TRANS_QUEUE, "trans test 2...");return "消息发送成功";}}

测试

下面基于我们编写的代码来进行一下简单的测试
@Transactional注解和不加@Transactional注解
在这里插入图片描述
我们先把注解屏蔽掉调用接口
在这里插入图片描述
此时再看看我们RabbitMQ的管理界面,可以看到第一条消息发送成功了
在这里插入图片描述
把消息删掉再加上@Transactional注解,再调用接口
在这里插入图片描述
在这里插入图片描述
可以看到此时我们的队列里就不会收到消息了
在这里插入图片描述


在这里插入图片描述


http://www.ppmy.cn/embedded/171980.html

相关文章

鸿蒙系统中的持续部署

鸿蒙操作系统,作为一款面向未来的分布式操作系统,旨在为不同的设备提供统一的操作系统平台。它支持多种终端设备,包括但不限于智能手机、平板电脑、智能穿戴设备和物联网(IoT)设备等,并且能够实现跨平台的无…

通过AudioTrack计算剩余播放时间的实现

在Android中,通过AudioTrack计算剩余播放时间的关键步骤如下: 1. 核心思路 已播放帧数:通过getPlaybackHeadPosition()获取当前播放的音频帧数(需注意32位溢出问题)。 剩余帧数:总帧数(数据总量…

Phi-4-multimodal:图、文、音频统一的多模态大模型架构、训练方法、数据细节

Phi-4-Multimodal 是一种参数高效的多模态模型,通过 LoRA 适配器和模式特定路由器实现文本、视觉和语音/音频的无缝集成。训练过程包括多阶段优化,确保在不同模式和任务上的性能,数据来源多样,覆盖高质量网络和合成数据。它的设计…

如何在Spring Boot中校验用户上传的图片文件的两种方法

在现代应用中,用户上传图片是一个常见的需求。无论是社交平台、电子商务网站还是任何需要用户交互的应用,图片上传功能都显得尤为重要。但合理地校验用户上传的图片文件是必不可少的步骤,避免不合规的文件影响系统的稳定性和安全性。本文将介…

Git和GitHub基础教学

文章目录 1. 前言2. 历史3. 下载安装Git3.1 下载Git3.2 安装Git3.3 验证安装是否成功 4. 配置Git5. Git基础使用5.1 通过Git Bash使用5.1.1 创建一个新的仓库。5.1.1.1 克隆别人的仓库5.1.1.2 自己创建一个本地仓库 5.1.2 管理存档 5.2 通过Visual Studio Code使用 6. Git完成远…

【一个月备战蓝桥算法】递归与递推

字典序 在刷题和计算机科学领域,字典序(Lexicographical order)也称为词典序、字典顺序、字母序,是一种对序列元素进行排序的方式,它模仿了字典中单词的排序规则。下面从不同的数据类型来详细解释字典序: …

Qwen/QwQ-32B 基础模型上构建agent实现ppt自动生成

关心Qwen/QwQ-32B 性能测试结果可以参考下 https://zhuanlan.zhihu.com/p/28600079208https://zhuanlan.zhihu.com/p/28600079208 官方宣传上是该模型性能比肩满血版 DeepSeek-R1(671B)! 我们实现一个 使用Qwen/QwQ-32B 自动生成 PowerPoi…

云计算:虚拟化、容器化与云存储技术详解

在上一篇中,我们深入探讨了网络安全的核心技术,包括加密、认证和防火墙,并通过实际案例和细节帮助读者全面理解这些技术的应用和重要性。今天,我们将转向一个近年来迅速发展的领域——云计算。云计算通过提供按需访问的计算资源,彻底改变了IT基础设施的构建和管理方式。本…