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

【RabbitMQ】事务

事务的简单配置及使用

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

在这里插入图片描述

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

配置事务管理器


@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);}}

声明队列

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

生产者代码

@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注解,再调用接口
在这里插入图片描述
在这里插入图片描述
可以看到此时我们的队列里就不会收到消息了
在这里插入图片描述


在这里插入图片描述

相关文章:

【RabbitMQ】事务

事务的简单配置及使用 配置事务管理器声明队列生产者代码测试 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的&#xff0c…...

常见的交换机端口类型

在计算机网络中,Access端口 和 Trunk端口 是两种常见的交换机端口类型,主要用于VLAN(虚拟局域网)的配置。它们的主要区别在于如何处理VLAN标签和数据帧。 1. Access端口 Access端口通常用于连接终端设备(如PC、打印机…...

Linux Shell 脚本编程极简入门指南

一、学习前提准备 ✅ 环境要求: Linux系统(Ubuntu/CentOS等)或 WSL (Windows用户) 任意文本编辑器(推荐VSCode/Vim) 基础命令行操作能力 🔍 验证环境: # 查看系统默认Shell echo $SHELL #…...

【医院管理会计专题】7.解锁本量利分析:医院医疗服务决策的智慧密码

医院成本核算、绩效管理、运营统计、内部控制、管理会计专题索引 一、引言 在当今医疗行业竞争日益激烈的背景下,医院管理面临着诸多挑战,如何实现高效运营、提升服务质量并控制成本成为关键问题。管理会计作为一种重要的管理工具,在医院管理中发挥着越来越重要的作用。本…...

Kotlin和Java区别

哈哈哈,前段时间,面试的时候,突然问到我Kotlin和Java的区别,一下子把我问懵逼了,确实没遇到问这个的,想了下,说了下Kotlin的编译时空检查机制,代码更简洁,很多封装好的AP…...

Taro 面试题

基础概念 1. Taro 是什么?它的核心特点有哪些? Taro 是京东开源的 多端统一开发框架,基于 React 语法,可编译到 微信小程序、H5、React Native 等多个端。 核心特点: 多端适配:一套代码运行多个端支持 …...

Java部署在window启动报unable tocreate tempdir

在Windows系统中,Java应用在运行时会试图在默认的临时目录中创建文件。该临时目录通常由系统环境变量TEMP或TMP指定。如果这些变量设置不正确、指向一个无效的路径,或者操作系统的权限不足,就会导致“Unable to create tempdir”错误。 解决…...

基于deepseek和开放题库,构建专业大模型微调在线答题系统

为什么要进行大模型微调 大模型微调是将预训练模型适配到特定任务或领域的关键技术,正常情况下大模型通过海量通用数据训练获得广泛知识,但其参数和表征空间面向通用场景,难以直接适配垂直领域或复杂任务。例如在通用医疗问答模型在具体病症诊…...

ios 小组件和数据共享

创建主工程就不必讲了 1 创建小组件 创建子工程 [new Target ] 选择 [ Widger Extension] 小组件入口是WidgetBundle文件,可以进行多个小组件的调试 TestWidget2文件是主要操作,小组件使用swiftUI布局,使用 AppIntent进行事件处理&#xff…...

LVTTL(Low Voltage Transistor-Transistor Logic)电平详解

一、LVTTL电平的定义与核心特性 LVTTL(低压晶体管-晶体管逻辑)是传统TTL(5V)的低电压版本,工作电压通常为3.3V,旨在降低功耗并适配现代低电压集成电路,同时保持与TTL的逻辑兼容性。其核心特点如…...

element tree树形结构默认展开全部

背景: el-tree树形结构,默认展开全部,使用属性default-expand-all【是否默认展开所有节点】;默认展开一级,设置default-expanded-keys【默认展开的节点的 key 的数组】属性值为数组。 因为我这里的数据第一级是四川【省…...

统计登录系统10秒内连续登录失败超过3次的用户

为防止暴力破解用户账号的行为,在输入账号和密码时一般都会限制用户尝试密码输出错误的次数,如果用户多次输错密码后,将在一段时间内锁定账号,常见的有银行类APP、个税App等应用,如下是用户账号密码输入错误的提示图&a…...

音视频软件工程师面试题

一、基础知识 编解码相关 H.264 和 H.265(HEVC)的主要区别是什么?视频编解码的基本流程是什么?关键技术有哪些?音频编解码(如 AAC、MP3、Opus)的区别和应用场景?什么是 B 帧、P 帧、I 帧?它们的作用是什么? 流媒体协议RTMP、HTTP-FLV、HLS、WebRTC 的区别和应用场景…...

架构师面试(十四):注册中心设计

问题 大家或多或少都接触过【注册中心】,对注册中心的基本功能,如:服务注册、服务发现、健康检查和变更通知 ,肯定是耳熟能详的;那么大家对注册中心的架构设计是否了解呢? 如果让你负责设计一个分布式的注…...

ctf-web: php原生类利用 -- GHCTF Popppppp

源代码 <?php error_reporting(0); class CherryBlossom { public $fruit1; public $fruit2; public function __construct($a) {$this->fruit1 $a; } function __destruct() { echo $this->fruit1; } public function __toString() { $newFunc …...

「Unity3D」UGUI将元素固定在,距离屏幕边缘的某个比例,以及保持元素自身比例

在不同分辨率的屏幕下&#xff0c;UI元素按照自身像素大小&#xff0c;会发生位置与比例的变化&#xff0c;本文仅利用锚点&#xff08;Anchors&#xff09;使用&#xff0c;来实现UI元素&#xff0c;固定在某个比例距离的屏幕边缘。 首先&#xff0c;将元素的锚点设置为中心&…...

nextjs15简要介绍以及配置eslint和prettier

目录 一、Next.js 何时使用服务器端渲染&#xff08;SSR&#xff09;&#xff1f;何时使用静态生成&#xff08;SSG&#xff09;&#xff1f; 1、服务器端渲染&#xff08;SSR - getServerSideProps&#xff09; 2、 静态生成&#xff08;SSG - getStaticProps&#xff09; …...

存储过程和自定义函数在银行信贷业务中的应用(oracle)

数据校验和清洗 例如&#xff0c;检查客户的年龄是否在合理范围内&#xff0c;贷款金额是否符合规定的上下限等。 对于不符合规则的数据&#xff0c;可以进行清洗和修正。比如&#xff0c;将空值替换为默认值&#xff0c;或者对错误的数据进行纠正。 CREATE OR REPLACE PROC…...

基于Ollama平台部署的Qwen大模型实现聊天机器人

文章目录 基于Ollama平台部署的Qwen大模型实现聊天机器人1 概述2 技术栈2.1 开发技术2.2 环境 3 技术架构4 实现步骤4.1 环境搭建4.1.1 WSL配置及Ubuntu安装4.1.2 Ollama安装及模型部署 4.2 模块安装4.2.1 安装Streamlit 1.42.24.2.2 安装requests 2.32.34.2.3 安装ollama 0.4.…...

在 JDK 1.8 的 ConcurrentHashMap 中,为什么存在两种插入方式?

在 JDK 1.8 的 ConcurrentHashMap 中&#xff0c;之所以对“容器为空”和“计算位置为空”采取不同的处理方式&#xff0c;主要是因为 并发场景下的性能优化和并发安全保证。我们可以分开来看这两种情况&#xff1a; 1. 容器为空时&#xff0c;使用 volatile CAS 初始化 原因…...

S32K144开发板调试实战:除了点灯,如何用S32DS的调试窗口快速排查变量异常问题?

S32K144开发板调试实战&#xff1a;变量异常排查与高效调试技巧 调试嵌入式系统时&#xff0c;最令人头疼的莫过于程序看似正常运行&#xff0c;但某些变量值却莫名其妙地偏离预期。作为一名长期使用S32 Design Studio&#xff08;S32DS&#xff09;进行S32K144开发的工程师&a…...

从波形到Mel谱图:机器学习音频特征提取的完整实践指南

1. 音频信号处理基础&#xff1a;从物理世界到数字信号 第一次接触音频信号处理时&#xff0c;我被那一串串看似随机的波形数据弄得一头雾水。直到后来才明白&#xff0c;这些数字背后其实对应着我们熟悉的物理现象——声音。声音的本质是空气压力的变化&#xff0c;就像水面泛…...

Ile-Ser-Bradykinin(T-Kinin) ;ISRPPGFSPFR

一、基础信息多肽名称&#xff1a;Ile-Ser-Bradykinin&#xff0c;别名 T-Kinin&#xff08;T - 激肽&#xff09; 三字母序列&#xff1a;Ile-Ser-Arg-Pro-Pro-Gly-Phe-Ser-Pro-Phe-Arg 单字母序列&#xff1a;ISRPPGFSPFR 氨基酸数量&#xff1a;11 aa 结构修饰&#xff1a;线…...

【STM32H7实战】HRTIM高分辨率定时器在数字电源与电机控制中的高级应用与HAL库配置

1. HRTIM高分辨率定时器概述 HRTIM&#xff08;High-Resolution Timer&#xff09;是STM32H7系列中一个强大的定时器外设&#xff0c;专为数字电源转换、电机控制等高性能实时控制场景设计。相比普通定时器&#xff0c;它的分辨率高达184ps&#xff08;在400MHz主频下&#xff…...

Linux桌面便签神器Sticky:3分钟告别灵感遗忘的终极解决方案

Linux桌面便签神器Sticky&#xff1a;3分钟告别灵感遗忘的终极解决方案 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 你是否曾经有过这样的经历&#xff1f;在编码时突然想到一个绝妙的算法…...

2026年5月AI编程工具最新横评

摘要本文基于2026年4-5月AtomGit开源社区、SegmentFault等平台的最新实测数据&#xff0c;覆盖当前市占率最高的5款主流AI编程工具&#xff0c;从功能、价格、适用场景三个维度拆解优劣&#xff0c;不管你是学生、职场开发者还是独立开发者&#xff0c;都能直接抄作业选到最适合…...

Vcpkg不只是个安装器:在Windows上用它为你的C++项目打造可复现的构建环境

Vcpkg工程化实践&#xff1a;构建可复现的C开发环境 在大型C项目中&#xff0c;依赖管理一直是开发者面临的痛点之一。不同团队成员使用不同版本的第三方库&#xff0c;CI服务器上的构建环境与本地开发环境不一致&#xff0c;这些问题常常导致"在我机器上能运行"的尴…...

手把手教你用CH342 USB转串口模块在Ubuntu 22.04上调试(附dmesg日志分析)

手把手教你用CH342 USB转串口模块在Ubuntu 22.04上调试&#xff08;附dmesg日志分析&#xff09; 嵌入式开发中&#xff0c;串口调试是最基础却最容易出问题的环节。当你在Ubuntu 22.04上插入CH342模块准备调试ESP32开发板时&#xff0c;是否遇到过设备无法识别、权限拒绝或者波…...

AI大模型选型生死线(2026企业采购决策白皮书):API延迟、幻觉率、合规审计通过率三维淘汰制解析

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI大模型选型生死线&#xff1a;2026企业采购决策范式重构 当算力成本下降47%、推理延迟压缩至83ms、私有化微调周期缩短至4.2小时&#xff0c;企业不再比拼“谁用了大模型”&#xff0c;而是在验证“谁…...

Epson M-G366PDG:工业级高性能惯性测量单元,精准稳定首选

引言在工业自动化、机器人、无人机等领域&#xff0c;惯性测量单元&#xff08;IMU&#xff09;是至关重要的传感器之一。它能够提供高精度的姿态和运动数据&#xff0c;从而确保系统的稳定性和可靠性。Epson M-G366PDG 作为一款工业级高性能 IMU&#xff0c;凭借其卓越的性能和…...