可以在github上进行下载windows版本和linux版本的压缩包,解压
包括dubbo,zookeeper,的配置,当然还要引入seata的依赖
引入dubbo的时候要排除spring相关,避免冲突
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>${jackson.version}version>
dependency>
<dependency>
<groupId>io.seatagroupId>
<artifactId>seata-allartifactId>
<version>0.9.0version>
dependency>
<dependency>
<groupId>org.apache.curatorgroupId>
<artifactId>curator-frameworkartifactId>
<version>4.2.0version>
dependency>
<dependency>
<groupId>org.apache.curatorgroupId>
<artifactId>curator-recipesartifactId>
<version>4.2.0version>
dependency>
Seata服务器配置文件
将服务器conf目录的file.conf文件和registry.conf文件拷贝到服务的资源路径,修改配置
Registry.conf
registry {
type = "file"
file {
name = "file.conf"
}
}
File.conf
在选择file配置的前提下修改该配置
service {
#vgroup->rgroup
vgroup_mapping.my_test_tx_group="default"-分支事务的事务分组
一个服务器可以管理多个事务分组
#only support single node
default.grouplist = "127.0.0.1:8091" --端口启动时也可以指定端口号
#degrade current not support
enableDegrade = false
#disable
disable = false
}
所以,各个项目都要在项目中指定事务分组,配置file.conf文件,才可以将分支事务分别注册到tc中,以供tc进行事务的协调控制,各个服务的事务分组名可以不同,但只要是注册到一个tc中,事务就会得到控制。
服务启动命令
seataServer.bat/.sh -p端口号 -m 配置文件名
Dubbo.xml
<dubbo:application name="应用名称">
<dubbo:parameter key="qos.enable" value="true"/>
<dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
<dubbo:parameter key="qos.port" value="33333"/>
dubbo:application>
<dubbo:registry protocol="zookeeper" address="服务地址:2181"/>
<dubbo:registry protocol="zookeeper" address="服务地址:2181,。。。"/>
<dubbo:protocol name="dubbo" port="20880"/>
<bean id="xxx" class="com.xxx.xxx.xxx.xxxImpl"/>
<dubbo:service interface="com.xxx.xxx.service.xxx" ref="xxxImpl"/>
<dubbo:reference interface="com.xxx.xxx.service.xxx" id="xxxImpl" />
使用的地方直接进行接口注入即可
在配置文件中加上
在需要发布服务的接口上方标注@Service注解(注意这一用的是alibaba的service注解)
在配置文件中加上
注解方式服务发布失败的问题
<dubbo:consumer timeout="2000"/>
@Bean
public GlobalTransactionScanner globalTransactionScanner() {
return new GlobalTransactionScanner("应用名称-service", "my_test_tx_group");
}
作用:扫描全局事务注解@GlobalTransactionScanner
@Bean
public DataSourceProxy dataSourceProxy(DataSource druidDataSource) {
return new DataSourceProxy(druidDataSource);
}
sqlSessionFactory工厂要使用代理数据源作为数据源,每个服务的代理数据源会交于事务协调器管理,用来配合全局事务提交或回滚本地已提交的事务