Seata Server - TC全局事务协调器、order 添加 seata-at 事务

1.解压课前资料里的seata-server-1.3.0。然后配置

配置registry.conf向 eureka 注册

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第1张图片

配置file.conf,用户存储日志

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第2张图片

配置seata-server.bat 虚拟机使用的内存

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第3张图片
然后双击 seata-server.bat 启动后,查看eureka注册中心
Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第4张图片

2.order 添加 seata-at 事务

添加 seata 依赖:把之前注释的以来打开

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第5张图片

三个配置文件
 1.application.yml 事务组的组名

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第6张图片

2.registry.conf
eureka的地址,要从eureka获取seata server的地址     

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第7张图片

3.file.conf

事务组,对应使用的事务协调器的服务id
Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第8张图片
Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第9张图片

registry.conf和file.conf都是从课前资料里复制的。只需要按要求修改就行

2.1 定义自动配置类、创建seate-at的数据源代理对象

数据源代理对象中,代理执行数据库sql语句,执行自动的事务控制代码 

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第10张图片

package cn.tedu.order;
import com.zaxxer.hikari.HikariDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
@Configuration
public class DSAutoConfiguration {
    //创建原始数据源
 @Bean
 @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource hikariDS(){
        //hikari使用的数据库连接地址,使用 jdbcUrl 属性
 return new HikariDataSource();
    }
//创建 seata at 代理数据源
@Bean
@Primary
public DataSource dataSource(DataSource hikariDS){
    //hikariDS是被代理的目标对象
 return new DataSourceProxy(hikariDS);
}
}

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第11张图片
Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第12张图片
Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第13张图片

2.2在业务方法上,添加事务注解并暂时注释另外两个方法

Seata AT 对业务无侵入,所以启动全局事务非常简单,只需要添加一个 `@GlobalTransactional` 注解即可

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第14张图片

启动测试
http://localhost:8083/create?userId=1&productId=1&count=10&money=100
观察控制台

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第15张图片
模拟异常,再orderServiceImpl类中加一段代码,再访问,控制台可能会出现回滚
Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第16张图片

3.在account和storage中也添加上事务后,通过order访问就报错500.,今天下午又重做了2遍,没解决。暂时不纠结了。

Seata Server - TC全局事务协调器、order 添加 seata-at 事务_第17张图片

你可能感兴趣的:(java)