1、nacos及seata下载地址
Nacos Server 下载 | Nacos 官网
Seata Java Download | Apache Seata
这里的seata版本用2.1.0版本。
2、启动nacos
D:\本地-seata-nacos\nacos-server\bin>startup.cmd -m standalone
3、修改seata的conf下的application的内容
这里的数据库seata自己创建,并需要创建4张表:
-- auto-generated definition
create table branch_table
(
branch_id bigint not null
primary key,
xid varchar(128) not null,
transaction_id bigint null,
resource_group_id varchar(32) null,
resource_id varchar(256) null,
branch_type varchar(8) null,
status tinyint null,
client_id varchar(64) null,
application_data varchar(2000) null,
gmt_create datetime(6) null,
gmt_modified datetime(6) null
);
create index idx_xid
on branch_table (xid);
-- auto-generated definition
create table distributed_lock
(
lock_key char(20) not null
primary key,
lock_value varchar(20) not null,
expire bigint null
);
-- auto-generated definition
create table global_table
(
xid varchar(128) not null
primary key,
transaction_id bigint null,
status tinyint not null,
application_id varchar(32) null,
transaction_service_group varchar(32) null,
transaction_name varchar(128) null,
timeout int null,
begin_time bigint null,
application_data varchar(2000) null,
gmt_create datetime null,
gmt_modified datetime null
);
create index idx_status_gmt_modified
on global_table (status, gmt_modified);
create index idx_transaction_id
on global_table (transaction_id);
-- auto-generated definition
create table lock_table
(
row_key varchar(168) not null
primary key,
xid varchar(128) null,
transaction_id bigint null,
branch_id bigint not null,
resource_id varchar(256) null,
table_name varchar(256) null,
pk varchar(36) null,
status tinyint default 0 not null comment '0:locked ,1:rollbacking',
gmt_create datetime null,
gmt_modified datetime null
);
create index idx_branch_id
on lock_table (branch_id);
create index idx_status
on lock_table (status);
create index idx_xid
on lock_table (xid);
4、在nacos的页面中添加配置
seataClient.properties的配置内容如下:
# 事务组映射
service.vgroupMapping.my_test_tx_group=default
# Seata 服务端地址
service.grouplist.default=127.0.0.1:8091
# 客户端与服务端通信的线程池大小
client.rm.async.commit.buffer.limit=10000
client.rm.lock.retry.interval=10
client.rm.lock.retry.times=30
client.rm.lock.retry.policy.branch-rollback-on-conflict=true
client.tm.commit.retry.count=5
client.tm.rollback.retry.count=5
seataServer.properties的配置内容如下:
# 事务日志存储模式,这里使用数据库存储
store.mode=db
# 数据库相关配置
store.db.datasource=druid
store.db.db-type=mysql
store.db.driver-class-name=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf-8&useSSL=false
store.db.user=root
store.db.password=root
store.db.min-conn=5
store.db.max-conn=30
store.db.global-table=global_table
store.db.branch-table=branch_table
store.db.lock-table=lock_table
store.db.query-limit=100
# 其他配置,可按需调整
service.vgroupMapping.my_test_tx_group=default
service.grouplist.default=127.0.0.1:8091
5、可以启动seata服务
启动后看seata是否注册到nacos中
6、微服务整合Seata的配置
seata:
enabled: true
tx-service-group: default_tx_group
enable-auto-data-source-proxy: false
registry:
type: nacos
nacos:
server-addr: 127.0.0.1:8848
group: SEATA_GROUP
username: nacos
password: nacos
data-id: seataServer.properties
cluster: default
application: seata-server
service:
vgroup-mapping:
default_tx_group: default
disable-global-transaction: false
可以在业务类中添加@GlobalTransactional注解: