注:有句话是这样说的”纸上得来终觉浅,绝知此事要躬行“。
1、下载seata-server1.6.1,官网地址:Seata | Seata
2、修改安装包conf中的配置文件application.yml,我这里全部采用nacos的方式
1)、修改config,将type属性值修改为nacos,并添加连接地址
2)、修改registry,将type属性值修改为nacos,并添加连接地址
3)、修改config,将type属性值修改为nacos,并添加连接地址
server:
port: 7091
spring:
application:
name: seata-server
logging:
config: classpath:logback-spring.xml
file:
path: ${user.home}/logs/seata
extend:
logstash-appender:
destination: 127.0.0.1:4560
kafka-appender:
bootstrap-servers: 127.0.0.1:9092
topic: logback_to_logstash
console:
user:
username: seata
password: seata
seata:
config:
# support: nacos, consul, apollo, zk, etcd3
type: nacos
nacos:
server-addr: 127.0.0.1:8848
namespace: 0808664a-213c-4b19-978c-c4d8257ac94b
group: DEFAULT_GROUP
username: nacos
password: nacos
context-path:
##if use MSE Nacos with auth, mutex with username/password attribute
#access-key:
#secret-key:
data-id: seataServer.properties
registry:
# support: nacos, eureka, redis, zk, consul, etcd3, sofa
type: nacos
nacos:
application: seata-server
server-addr: 127.0.0.1:8848
group: DEFAULT_GROUP
namespace: 0808664a-213c-4b19-978c-c4d8257ac94b
cluster: default
username: nacos
password: nacos
context-path:
##if use MSE Nacos with auth, mutex with username/password attribute
#access-key:
#secret-key:
store:
# support: file 、 db 、 redis
mode: file
# server:
# service-port: 8091 #If not configured, the default is '${server.port} + 1000'
security:
secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
tokenValidityInMilliseconds: 1800000
ignore:
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
3、在安装包seata/script/config-center中找到config.txt并复制到nacos配置文件中去,在相应的空间下建立配置文件如下图:
1)、需要修改的配置参数,store.mode=db,和数据库连接信息
2)、将service.vgroupMapping.default_tx_group=default修改成service.vgroupMapping.my_test_tx_group=default,保持与springcloud项目中的组名一致
4、将seata161\script\server\db下面的sql文件导入数据库
1)、另外在AT模式中,需要在参与全局事务的数据库中,添加一个undo_log表,SQL如下:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for undo_log
-- ----------------------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log` (
`branch_id` bigint(20) NOT NULL COMMENT '分支事务ID',
`xid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '全局事务ID',
`context` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '上下文',
`rollback_info` longblob NOT NULL COMMENT '回滚信息',
`log_status` int(11) NOT NULL COMMENT '状态,0正常,1全局已完成',
`log_created` datetime(6) NOT NULL COMMENT '创建时间',
`log_modified` datetime(6) NOT NULL COMMENT '修改时间',
UNIQUE INDEX `ux_undo_log`(`xid`, `branch_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'AT transaction mode undo table' ROW_FORMAT = Compact;
SET FOREIGN_KEY_CHECKS = 1;
5、springCloud项目配置文件如下:
project:
namespace: 0808664a-213c-4b19-978c-c4d8257ac94b
nacosaddr: 192.168.0.152:8848
username: nacos
password: nacos
spring:
application:
name: ac-order
profiles:
active: test
cloud:
alibaba:
seata:
tx-service-group: my_test_tx_group
nacos:
config:
server-addr: ${project.nacosaddr}
username: ${project.username}
password: ${project.password}
namespace: ${project.namespace}
group: DEFAULT_GROUP
file-extension: yaml
prefix: ac-thirds-${spring.profiles.active}
discovery:
server-addr: ${project.nacosaddr}
username: ${project.username}
password: ${project.password}
namespace: ${project.namespace}
server:
port: 8105
servlet:
context-path: /order
6、启动seata-server.bat并测试项目的事务情况。