seata0.9.0版本的使用心得

作者:神秘网友 发布时间:2020-09-09 11:25:47

seata0.9.0版本的使用心得

seata0.9.0版本的使用心得

最近在使用springcloud Finchley.SR2 + springcloud alibaba 0.2.1.RELEASE + springboot 2.0.6.RELEASE+Nacos 1.3.1+Seata 0.9.0+Mybatis+Redis开发时,seata做全局分布式事务控制时一直报错.工程依赖jar包管理,
源码地址https://gitee.com/wuhan1/spring-cloud-alibaba-shop

<!--版本号管理-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>0.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- mysql版本 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>

            <!-- mybatis -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.0</version>
            </dependency>

            <!-- 数据源druid -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.9</version>
            </dependency>

            <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson</artifactId>
                <version>3.5.0</version>
            </dependency>

        <!-- 分布式事务seata包 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-seata</artifactId>
            <version>2.1.0.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>seata-all</artifactId>
                    <groupId>io.seata</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
            <version>0.9.0</version>
        </dependency>

        </dependencies>
    </dependencyManagement>


seata0.9.0版本的使用心得

 业务逻辑执行的时候报下面的错,找不到服务
seata0.9.0版本的使用心得

seata0.9.0版本的使用心得
主要是配置没配好,0.9.0版本的seata跟1.0以后的使用差别还是有点大,详细配置如下
1.下载seata0.9.0,地址:http://seata.io/zh-cn/blog/download.html
2.进入conf目录下,创建seatas数据库,执行脚本和修改file.conf、registry.conf、nacos-config.txt三个文件,

seata0.9.0版本的使用心得

创建seata数据库,执行脚本db_store.sql、,对应的业务表下都需要执行db_undo_log.sql,
seata0.9.0版本的使用心得seata0.9.0版本的使用心得
file.conf修改的地方,使用的db方式存储数据,所以后面的要配置数据库的连接
seata0.9.0版本的使用心得
seata0.9.0版本的使用心得

registry.conf修改,注册中心改成nacos
seata0.9.0版本的使用心得
seata0.9.0版本的使用心得
修改nacos-config.txt文件,配置seata的事务组名称等信息
seata0.9.0版本的使用心得

3.比较重要的一点,需要把seata的配置信息注册到nacos上,在conf目录下执行命令 sh nacos-config.sh localhost
在nacos那边也可以看到,

seata0.9.0版本的使用心得
seata0.9.0版本的使用心得
4.需要把file.conf和registry.conf文件复制到工程的resources下面,并且在application.yml中配置seata的事务组名称。
seata0.9.0版本的使用心得seata0.9.0版本的使用心得

还有很重要的一点,在启动类中加入以下代码 ,否则会发现失败了事务却没有回滚,主要是 配置seata 数据源,数据源采用 druid 的DruidDataSource,但实际 jdbcTemplate 执行时并不是用该数据源,而用的是 seata 对DruidDataSource的代理DataSourceProxy,所以,与 RM 相关的代码逻辑基本上都是从DataSourceProxy这个代理数据源开始的。

    @Bean
	@ConfigurationProperties(prefix = "spring.datasource")
	public DruidDataSource druidDataSource() {
		return new DruidDataSource();
	}

    /**
     * 需要将 DataSourceProxy 设置为主数据源,否则事务无法回滚
     */
    @Primary
	@Bean("dataSource")
	public DataSource dataSource(DruidDataSource druidDataSource) {
		return new DataSourceProxy(druidDataSource);
	}


重新启动工程就OK了

seata0.9.0版本的使用心得相关教程

  1. 使用Anaconda 安装其他包
  2. Unity UGUI滚动条以及UI基础使用
  3. Centos7.2使用vsftpd搭建FTP服务
  4. LeetCode - 回文数(不使用字符串)
  5. React中使用less
  6. PHPok4.8.338版本漏洞利用分析
  7. nmon分析工具的使用
  8. 使用ajax或XMLHttpRequest实现文件上传