Spring Boot项目整合Seata AT模式
目录
- 1、添加依赖
- 2.、配置Seata
- 3、创建AT模式表
- 4、使用Seata分布式事务
1、添加依赖
<dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId></dependency>
上述依赖适用于springboot项目
如果你的项目是springcloud项目,那么可以使用下面这个依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency>
spring-cloud-starter-alibaba-seata是为Spring Cloud应用程序开发的,可以在Spring Cloud环境中使用,并提供了与Spring Cloud Config、Eureka、Nacos等应用程序所需的集成。它依赖于Spring Cloud Alibaba项目,因此需要引入spring-cloud-starter-alibaba-dependencies的BOM(Bill of Materials),来管理版本依赖关系。
spring-cloud-starter-alibaba-seata推荐依赖配置方式,自定义seata-spring-boot-starter版本
<dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>最新版</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId><version>最新版本</version><exclusions><exclusion><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId></exclusion></exclusions></dependency>
2.、配置Seata
在 Spring Boot 应用的配置文件(application.yml 或 application.properties)中配置 Seata 相关参数,例如:
application.yml
seata:enabled: trueapplication-id: your_application_idtx-service-group: default_tx_groupenable-auto-data-source-proxy: truedata-source-proxy-mode: ATservice:vgroup-mapping:default_tx_group: defaultregistry:type: nacosnacos:server-addr: 127.0.0.1:8848group: SEATA_GROUPnamespace:username: nacospassword: nacosconfig:type: nacosnacos:server-addr: 127.0.0.1:8848group: SEATA_GROUPdata-id: seataServer.propertiesnamespace:username: nacospassword: nacos
上面我seata的注册和配置都放到了nacos上,nacos上的配置可以看我上一篇文章:https://blog.csdn.net/qq_36551991/article/details/135968940
注:data-id要与我们nacos创建的配置文件的data-id一致,这里默认的data-id为seata.properties
对于多个服务来说,都需要配置seata,而且注册中心需要一致
3、创建AT模式表
在AT模式下,每个业务数据库都必须创建 undo_log 表,undo_log 表是 Seata AT模式必须创建的表,主要用于分支事务的回滚
表机构地址:https://github.com/apache/incubator-seata/tree/master/script/client/at/db
大家在上面地址选择自己使用的数据库的sql脚本,进行执行,我的数据库是mysql,所以使用的是mysql.sql
Mysql表结构如下:
CREATE TABLE `undo_log` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`branch_id` bigint(20) NOT NULL,`xid` varchar(100) NOT NULL,`context` varchar(128) NOT NULL,`rollback_info` longblob NOT NULL,`log_status` int(11) NOT NULL,`log_created` datetime NOT NULL,`log_modified` datetime NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
4、使用Seata分布式事务
在我们的事务方法上添加@GlobalTransactional注解即可开启全局事务,主服务加上@GlobalTransactional注解即可,被调用服务不用加@GlobalTransactional和@Transactional;
下面是一个示例样板:
//seata全局事务注解@GlobalTransactional (rollbackFor=Exception.class)public void createOrder(Integer userId, Integer productId) {log.info("当前 XID: {}", RootContext.getXID());//1、减库存productFeigne.reduceStock(productId, 1);//2、减余额accountFeign.reduceBalance(userId, product.getPrice());//3、下订单Orders order = new Orders();ordersMapper.insertSelective(order);}
相关文章:
Spring Boot项目整合Seata AT模式
目录 1、添加依赖2.、配置Seata3、创建AT模式表4、使用Seata分布式事务 1、添加依赖 <dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId></dependency>上述依赖适用于springboot项目 如果你的项…...
作业2.5
第四章 堆与拷贝构造函数 一 、程序阅读题 1、给出下面程序输出结果。 #include <iostream.h> class example {int a; public: example(int b5){ab;} void print(){aa1;cout <<a<<"";} void print()const {cout<<a<<endl;} …...

LeetCode、790. 多米诺和托米诺平铺【中等,二维DP,可转一维】
文章目录 前言LeetCode、790. 多米诺和托米诺平铺【中等,二维DP,可转一维】题目与分类思路二维解法二维转一维 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质…...
Python 的 sys 模块常用方法
sys.argv: 命令行参数 List,第一个元素是程序本身路径 sys.modules.keys(): 返回所有已经导入的模块列表 sys.exc_info() :获取当前正在处理的异常类 exc_type、exc_value、exc_traceback 当前处理的异常详细信息 sys.exit(n)&…...

Kafka 使用手册
kafka3.0 文章目录 kafka3.01. 什么是kafka?2. kafka基础架构3. kafka集群搭建4. kafka命令行操作主题命令行【topic】生产者命令行【producer】消费者命令行【consumer】 5. kafka生产者生产者消息发送流程Producer 发送原理普通的异步发送带回调函数的异步发送同步…...

STM32F407移植OpenHarmony笔记7
继上一篇笔记,成功启动了liteos_m内核,可以创建线程了,也能看到shell控制台了。 今天研究文件系统,让控制台相关文件命令如mkdir和ls能工作。 liteos_m内核支持fatfs和littlefs两个文件系统, fatfs适用于SD卡ÿ…...
cortexM c语言和汇编嵌套编程
编程环境是:stm32cubeIde 原因:很多操作需要使用底层来做,比如中断时的上下文数据保存。也就是说用到汇编来实现。 疑问:c语言怎么才能跟汇编很好的兼容在一起呢?必将是我下一步的必经探索之路了。 一、C语言和汇编…...

国外传输大文件必选工具
企业在全球范围内的业务拓展带来了前所未有的机遇,同时也带来了跨国文件传输的挑战。大文件的高效、安全传输成为了企业亟需解决的问题。本文将深入探讨传统传输方式的局限性,云存储服务的便捷与挑战,以及专用文件传输软件的创新,…...

Redis渗透SSRF的利用
Redis是什么? Redis是NoSQL数据库之一,它使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。默认端口是:6379 工具安装 下载地址: http://download.redis.io/redis-stable.tar.gz然…...

【深度学习】基于PyTorch架构神经网络学习总结(基础概念基本网络搭建)
神经网络整体架构 类似于人体的神经元 神经网络工作原来为层次结构,一层一层的变换数据。如上述示例有4层,1层输入层、2层隐藏层、1层输出层神经元:数据的量或矩阵的大小,如上述示例中输入层中有三个神经元代表输入数据有3个特征…...

专业排版设计软件:QuarkXPress 2024 for mac中文激活版
QuarkXPress 2024 for Mac是一款功能强大、易于使用、高质量输出的专业排版软件。无论您是出版业的专家还是初学者,都可以通过QuarkXPress 2024轻松创建出令人惊叹的出版物。 软件下载:QuarkXPress 2024 for mac中文激活版下载 QuarkXPress 2023 for Mac…...

3593 蓝桥杯 查找最大元素 简单
3593 蓝桥杯 查找最大元素 简单 // C风格解法1,通过率100%,多组数据处理样式//str "abcdefgfedcba" //abcdefg(max)fedcba//str "xxxxx" //x(max)x(max)x(max)x(max)x(max)#include<bits/stdc.h>const int N 1e2 10;char …...
Postgresql数据库存储过程中的事务处理
在PostgreSQL中,事务处理是一种保证数据库操作要么完全成功,要么完全失败的机制,确保数据库的完整性和一致性。事务通过一系列的数据库操作组成,这些操作作为一个整体执行,它们要么全部成功,要么全部失败。…...

Redis——缓存的持久化
1、持久化机制 Redis的所有数据都保存在内存中,如果没有配置持久化功能,Redis重启后数据就会全部丢失,所以需要开启Redis的持久化功能,将数据保存到磁盘上,这样当Redis重启后,可以从磁盘中恢复数据。Redis…...

kafka-splunk数据通路实践
目的: 鉴于目前网络上没有完整的kafka数据投递至splunk教程,通过本文操作步骤,您将实现kafka数据投递至splunk日志系统 实现思路: 创建kafka集群部署splunk,设置HTTP事件收集器部署connector服务创建connector任务&a…...

C语言第十九弹---指针(三)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 指针 1、数组名的理解 2、使用指针访问数组 3、⼀维数组传参的本质 4、冒泡排序 5、二级指针 6、指针数组 7、指针数组模拟二维数组 总结 1、数组名的理解…...
TCP/IP LWIP FPGA 笔记
参考资料: 正点原子 LwIP 之 网络接口 netif(ethernetif.c、netif.c)-CSDN博客 IPv4/IPv6、DHCP、网关、路由_ipv6有网关的概念吗-CSDN博客 TCP/IP TCP/IP 协议中文名为传输控制协议/因特网互联协议,又名网络通讯协议…...

2024年海外优青项目申报指南
国家自然科学基金优秀青年科学基金(海外)项目(简称“海外优青项目”),一直备受海外优秀青年学者(包括博士后研究人员)关注,被看作是回国发展最为重要的资助项目之一。知识人网小编现…...
threejs之常用贴图
在三维图形和游戏开发中,高光贴图、凹凸贴图、法线贴图和环境光遮蔽贴图是常用的技术,用于增加虚拟物体表面的细节和真实感,而无需增加更多的几何体。这些技术可以帮助开发者和艺术家创造出既详细又性能高效的场景。 高光贴图(Sp…...

Unity类银河恶魔城学习记录3-1 EnemyStateMachine源代码 P47
Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Enemy.cs using System.Collections; using System.Collections.Generic;…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...