Seata配置篇

下载seata-server

下载地址:Releases · seata/seata · GitHub

创建库导入SQL

        在/script/server/db下的dm.sql下导入即可。具体的SQL如下

-- -------------------------------- The script used when storeMode is 'db' --------------------------------

-- the table to store GlobalSession data

CREATE TABLE IF NOT EXISTS `global_table`

(

`xid` VARCHAR(128) NOT NULL,

`transaction_id` BIGINT,

`status` TINYINT NOT NULL,

`application_id` VARCHAR(32),

`transaction_service_group` VARCHAR(32),

`transaction_name` VARCHAR(128),

`timeout` INT,

`begin_time` BIGINT,

`application_data` VARCHAR(2000),

`gmt_create` DATETIME,

`gmt_modified` DATETIME,

PRIMARY KEY (`xid`),

KEY `idx_status_gmt_modified` (`status` , `gmt_modified`),

KEY `idx_transaction_id` (`transaction_id`)

) ENGINE = InnoDB

DEFAULT CHARSET = utf8mb4;

-- the table to store BranchSession data

CREATE TABLE IF NOT EXISTS `branch_table`

(

`branch_id` BIGINT NOT NULL,

`xid` VARCHAR(128) NOT NULL,

`transaction_id` BIGINT,

`resource_group_id` VARCHAR(32),

`resource_id` VARCHAR(256),

`branch_type` VARCHAR(8),

`status` TINYINT,

`client_id` VARCHAR(64),

`application_data` VARCHAR(2000),

`gmt_create` DATETIME(6),

`gmt_modified` DATETIME(6),

PRIMARY KEY (`branch_id`),

KEY `idx_xid` (`xid`)

) ENGINE = InnoDB

DEFAULT CHARSET = utf8mb4;

-- the table to store lock data

CREATE TABLE IF NOT EXISTS `lock_table`

(

`row_key` VARCHAR(128) NOT NULL,

`xid` VARCHAR(128),

`transaction_id` BIGINT,

`branch_id` BIGINT NOT NULL,

`resource_id` VARCHAR(256),

`table_name` VARCHAR(32),

`pk` VARCHAR(36),

`status` TINYINT NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',

`gmt_create` DATETIME,

`gmt_modified` DATETIME,

PRIMARY KEY (`row_key`),

KEY `idx_status` (`status`),

KEY `idx_branch_id` (`branch_id`),

KEY `idx_xid` (`xid`)

) ENGINE = InnoDB

DEFAULT CHARSET = utf8mb4;

CREATE TABLE IF NOT EXISTS `distributed_lock`

(

`lock_key` CHAR(20) NOT NULL,

`lock_value` VARCHAR(20) NOT NULL,

`expire` BIGINT,

primary key (`lock_key`)

) ENGINE = InnoDB

DEFAULT CHARSET = utf8mb4;

INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);

INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);

INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);

INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);

在Nacos中创建seata的命名空间

        这里不做演示

将配置修改导入Nacos

        在/script/config-center下的config.txt

主要修改以下几个信息:

store.mode=db store.lock.mode=db store.session.mode=db

store.db.driverClassName=com.mysql.cj.jdbc.Driver store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true store.db.user=mysql store.db.password=mysql

        在/script/config-center/nacos下终端输入就会插入到Nacos中

sh nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -t seata命名空间id -u nacos -w nacos

修改yml

        在/conf下的application.yml

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

# 如果在nacos上添加了命名空间,则配置命令空间ID

namespace: id

# 配置分组

group: SEATA_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

preferred-networks: 30.240.*

nacos:

application: seata-server

server-addr: 127.0.0.1:8848

group: SEATA_GROUP

namespace: id

cluster: default

username: nacos

password: nacos

context-path:

##if use MSE Nacos with auth, mutex with username/password attribute

#access-key:

#secret-key:

server:

service-port: 8091 #If not configured, the default is '${server.port} + 1000'

max-commit-retry-timeout: -1

max-rollback-retry-timeout: -1

rollback-retry-timeout-unlock-enable: false

enable-check-auth: true

enable-parallel-request-handle: true

retry-dead-threshold: 130000

xaer-nota-retry-timeout: 60000

enableParallelRequestHandle: true

recovery:

committing-retry-period: 1000

async-committing-retry-period: 1000

rollbacking-retry-period: 1000

timeout-retry-period: 1000

undo:

log-save-days: 7

log-delete-period: 86400000

session:

branch-async-queue-size: 5000 #branch async remove queue size

enable-branch-async-remove: false #enable to asynchronous remove branchSession

store:

# support: file 、 db 、 redis

mode: db

session:

mode: db

lock:

mode: db

db:

datasource: druid

db-type: mysql

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true&useSSL=false

username: mysql

password: mysql

min-conn: 10

max-conn: 100

global-table: global_table

branch-table: branch_table

lock-table: lock_table

distributed-lock-table: distributed_lock

query-limit: 1000

max-wait: 5000

metrics:

enabled: false

registry-type: compact

exporter-list: prometheus

exporter-prometheus-port: 9898

transport:

rpc-tc-request-timeout: 15000

enable-tc-server-batch-send-response: false

shutdown:

wait: 3

thread-factory:

boss-thread-prefix: NettyBoss

worker-thread-prefix: NettyServerNIOWorker

boss-thread-size: 1

security:

secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017

tokenValidityInMilliseconds: 1800000

ignore:

urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/metadata/v1/**

启动Seata

        启动/bin里边的seata-server.bat即可

代码篇

引入依赖

org.springframework.boot

spring-boot-starter-parent

2.2.1.RELEASE

org.springframework.cloud

spring-cloud-dependencies

Hoxton.RELEASE

pom

import

com.alibaba.cloud

spring-cloud-alibaba-dependencies

2.2.0.RELEASE

pom

import

com.alibaba.cloud

spring-cloud-starter-alibaba-seata

2.0.0

io.seata

seata-spring-boot-starter

io.seata

seata-spring-boot-starter

2.0.0

修改yml

        在涉及到的多个服务方法的服务中修改yml

seata:

registry:

type: nacos

nacos:

server-addr: 127.0.0.1:8848

namespace: id

group: SEATA_GROUP

application: seata-server

username: nacos

password: nacos

tx-service-group: seata-group

service:

vgroup-mapping:

seata-group: default

# 开启数据源代理的XA模式

data-source-proxy-mode: XA

修改代码

        在多个服务方法汇集到一个方法的这个方法上添加上这个注解

@GlobalTransactional

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: