seata的安装及基本使用

seata的安装及基本使用

  • 安装
    • 注意事项
      • 1. 启动时需要带上seata所在服务器的地址和端口(默认是8091)
      • 2. seata的服务端配置文件application.yml中在配置nacos的namespace时,需要注意的是:对应的值是nacos中```namespace的id```, ```而不是名称!```
      • 3. 客户端启动时,报错“io.seata.common.exception.FrameworkException: can not register RM,err:register error,role:RMROLE,err:cost 30948 ms”
      • 4. seata分布事务中的事务标识 xid的传播,如果涉及到跨线程、异步调用时,必须手动实现xid的传播:
      • 5. 表undo_log可通过断点观察到产生的数据,请求完成后,数据会自动删除。

安装

Seata1.5.2安装配置(nacos)+部署

注意事项

1. 启动时需要带上seata所在服务器的地址和端口(默认是8091)

windows:
在这里插入图片描述
linux:
在这里插入图片描述

2. seata的服务端配置文件application.yml中在配置nacos的namespace时,需要注意的是:对应的值是nacos中namespace的id, 而不是名称!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 客户端启动时,报错“io.seata.common.exception.FrameworkException: can not register RM,err:register error,role:RMROLE,err:cost 30948 ms”

解决: 重启Nacos , 重启seata服务器端。

4. seata分布事务中的事务标识 xid的传播,如果涉及到跨线程、异步调用时,必须手动实现xid的传播:

Seata 提供了 RootContext 类来管理全局事务上下文,通过 getXID() 方法可以获取当前事务的 XID。Seata 通过 ThreadLocal 来存储
事务上下文,这使得在同一个线程中,不同的方法和服务之间可以共享相同的事务上下文。

虽然 Seata 在大多数情况下能够自动传播事务上下文,但在某些特殊的场景下,比如使用异步调用、跨线程调用等,可能需要手动进
行事务上下文的传播。这是因为 ThreadLocal 的限制,当线程切换时,ThreadLocal 中的数据不会被自动传递

主要实现代码:

	            // 从Seata获取XID,并将其添加到Feign请求标头中
	            String xid = RootContext.getXID();
	            if (xid != null) {
	                requestTemplate.header("TX_XID", xid);
	            }

完整代码:

import javax.servlet.http.HttpServletRequest;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import io.micrometer.core.instrument.util.StringUtils;
import io.seata.core.context.RootContext;

@Configuration
public class ComonConfig {

	@Bean
	public RequestInterceptor requestInterceptor() {
		return new RequestInterceptor() {
			@Override
			public void apply(RequestTemplate requestTemplate) {
				ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
						.getRequestAttributes();
				HttpServletRequest request = attributes.getRequest(); // 老 request
				
	            // 从Seata获取XID,并将其添加到Feign请求标头中
	            String xid = RootContext.getXID();
	            if (xid != null) {
	                requestTemplate.header("TX_XID", xid);
	            }
				
				requestTemplate.header("Cookie", request.getHeader("Cookie")); // 新request
				String pageSizeDefault = "20";
				String pageNumDefalut = "1";
				String pageSize = request.getParameter("pageSize");
				String pageNum = request.getParameter("pageNum");
				if (StringUtils.isNotEmpty(pageSize)) {
					pageSizeDefault = pageSize;
				}
				if (StringUtils.isNotEmpty(pageNum)) {
					pageNumDefalut = pageNum;
				}
				requestTemplate.header("pageSize", pageSizeDefault);
				requestTemplate.header("pageNum", pageNumDefalut);
//				requestTemplate.header("Accept", "application/json;charset=UTF-8");
//				requestTemplate.header("Content-Type", "application/json;charset=UTF-8");
			}
		};
	}
}

5. 表undo_log可通过断点观察到产生的数据,请求完成后,数据会自动删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/244076.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3分钟打造私人微信ChatGPT助手:新手友好指南!

接上文: https://mp.weixin.qq.com/s/RCqX0rx7TEu1gIwHEBBWKQ 本文适用于小白用户,技术大佬勿入! 前言 这里教大家如何快速的拥有一个属于自己的微信GPT助手 我个人其实不是这么部署的,但是为了方便小白用户,探索了一个…

【AI底层逻辑】——“数学华尔兹”之一元线性回归

一元线性回归模型想必大家都耳熟能详,这里不再赘述。但在使用python中机器学习包时一定见过类似模型评价参数的输出,这一章我们就讲一讲回归分析里一些模型评价概念! 一、方差分析ANOVA 方差分析是一种用于确定线性回归模型中不同变量对目标…

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 项目背景 随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提…

数字孪生轻量化引擎——AMRT3D引擎

随着全球经济亟待复苏,作为科技发展主要需求技术之一,数字孪生已经成为全球多个国家重点布局行业。例如,美国工业互联网盟将数字孪生作为工业互联网落地的核心和关键,德国工业4.0参考架构将数字孪生作为重要内容。 数字孪生已经形…

【问题解决】将页面下载为PDF文件(前端实现)

在前端开发过程中,将html页面下载为pdf文件的思路:使用html2canvas和jsPDF两个库,大致流程就是首先使用html2canvas库将组件内容转换为图像,然后使用jsPDF库将图像生成为PDF文件。 安装html2canvas库 npm install html2canvas安…

联邦学习算法介绍-FedAvg详细案例-Python代码获取

联邦学习算法介绍-FedAvg详细案例-Python代码获取 一、联邦学习系统框架二、联邦平均算法(FedAvg)三、联邦随梯度下降算法 (FedSGD)四、差分隐私随联邦梯度下降算法 (DP-FedSGD)五、差分隐私联邦平均算法 (DP-FedAVG)六…

word图片点击放大,word图片双击放大

网上自己搜了半天,都是顾左右而言他,直接实践一下。 干货就是:调整word视图为阅读模式,双机图片 就能放大查看,然后还会有一个 放大镜供点击放大到整个屏幕。 其实挺好理解的,word跟wps不同,w…

二十六、模型、视图、代理

二十六、模型、视图、代理 模型(Model) InterView框架中所有模型都基于抽象基类QAbstractItemModel类,此类由QAbstractListModel、QAbstractTableModel和QAbstractProxyModel类继承。 视图(View) InterView框架中的…

为什么需要分库分表,如何实现?

本文我们主要讲解“为什么需要分库分表,如何实现”。 在前文中讲到了读写分离,读写分离优化了互联网读多写少场景下的性能问题,考虑一个业务场景,如果读库的数据规模非常大,除了增加多个从库之外,还有其他…

爬虫 scrapy ——scrapy shell调试及下载当当网数据(十一)

目录 一、scrapy shell 1.什么是scrapy shell? 2.安装 ipython 3.使用scrapy shell 二、当当网案例 1.在items.py中定义数据结构 2.在dang.py中解析数据 3.使用pipeline保存 4.多条管道的使用 5.多页下载 参考 一、scrapy shell 1.什么是scrapy shell&am…

行业锦囊|住建厅CA证书使用指南

数字化、高效率、低成本已成为企业发展转型的重要考量因素,建筑工程企业也不例外。而工程资料签署和管理又是每个建筑工程企业发展转型绕不开的课题:在建工程项目异地盖章周期性长、庞大的签署量及海量的文件管理如何优化;企业如何缩短对公业…

AXURE地图获取方法

AXURE地图截取地址 https://axhub.im/maps/ 1、点击上方地图或筛选所需地区的地图,点击复制到 Axure 按钮,到 Axure 粘贴就可以了 2、复制到 Axure 后,转化为 svg 图形,就可以随意更改尺寸/颜色/边框,具体操作如下&am…

【AI美图】第01期效果图,AI人工智能无绘画,美图欣赏

人工智能被各大平台传递,我也来凑一下热闹,放一组基础图片展示 介绍一下模型来源Stability AI: Stability AI直接将模型开源,且方式之粗暴,几乎完全不对生成内容做任何审核或者过滤。目前发布的稳定版本仅包含部分关…

ProcessOn基本介绍和完成案列和自定义元件

ProcessOn基本介绍和完成案列和自定义元件 1.什么是ProcessOn2.初步使用ProcessOn3.使用ProcessOn完成医疗项目门诊模块的流程图4.使用ProcessOn完成医疗项住院模块的流程图5.使用ProcessOn完成医疗项目药房模块的流程图5.使用ProcessOn完成会议oa模块的流程图6.自定义原件库1.…

设计表单表格组件

前言 什么是表单表格呢?简单来说就是在一个表格里面进行表单操作,执行增删改查。这在一些后台管理系统中是尤为常见的。 今天我们根据vue2 element-ui来设计一个表单表格组件。(不涉及完整代码,想要使用完整功能可以看底部连接…

超级计算机行业分析:中国市场概念及发展现状研究

近年来,在技术研发和产业应用的共同推动下,中国超级计算机(简称“超算”)快速发展——技术创新方面,采用自主研发芯片的多个国内超算曾在世界超算榜单上排名第一;整体规模方面,在最新发布的全球超算榜单中,中国占比超过…

<博图> 浮点数(real)相加时结果不精确的解决方法

问题截图: 每按下一次按钮,浮点数1 加0.1,结果放在浮点数1中;在加到第8次时会多出小数点位数。 解决方法: 对要进行相加的浮点数进行转换,如下 : (注:如果图片模糊保存…

流程图、泳道图的介绍和示例分享,以及自定义元件库的介绍

目录 一. 流程图介绍 二. Processon使用 新建一个流程图 图形的使用 三. 流程图示例 登录界面 门诊业务流程图 住院业务流程图 药房业务流程图 会议OA流程图 四. 泳道图介绍 五. 自定义元件库 5.1 新建一个元件库 5.2 创建元件 5.3 使用自定义元件库 一. 流程图介…

四六级高频词组9

目录 词组 其他链接 词组 351. be guilty of 犯有…罪或过失 352. be in the habit of 习惯于 353. break off (a habit) 改掉(某种习惯) 354. break sb. of (a habit)使某人改掉(某习惯&a…

UI自动化Selenium 测试报告BeautifulReport使用及修改

一、BeautifulReport安装 pip安装 pip install BeautifulReport Pycharm中安装 二、原生报告样式 原生报告,因为我使用ddtunittest数据驱动模式,所以Excel中所有参数都会被拼接出来,导致测试方法里面有太多不需要展示的内容; …