1.解压课前资料里的seata-server-1.3.0。然后配置
配置registry.conf向 eureka 注册
配置file.conf,用户存储日志
配置seata-server.bat 虚拟机使用的内存
然后双击 seata-server.bat 启动后,查看eureka注册中心
2.order 添加 seata-at 事务
添加 seata 依赖:把之前注释的以来打开
三个配置文件
1.application.yml 事务组的组名
2.registry.conf
eureka的地址,要从eureka获取seata server的地址
3.file.conf
事务组,对应使用的事务协调器的服务id
registry.conf和file.conf都是从课前资料里复制的。只需要按要求修改就行
2.1 定义自动配置类、创建seate-at的数据源代理对象
数据源代理对象中,代理执行数据库sql语句,执行自动的事务控制代码
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);
}
}
2.2在业务方法上,添加事务注解并暂时注释另外两个方法
Seata AT 对业务无侵入,所以启动全局事务非常简单,只需要添加一个 `@GlobalTransactional` 注解即可
启动测试
http://localhost:8083/create?userId=1&productId=1&count=10&money=100
观察控制台
模拟异常,再orderServiceImpl类中加一段代码,再访问,控制台可能会出现回滚
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。