> 文档中心 > seata1.4版本配置以及java配置

seata1.4版本配置以及java配置


1.Seata下载

GitHub下载1.4.2版本
seata1.4版本配置以及java配置
第一个是源码
第二个是编译后的 建议都下载因为有些文件在0.9版本后面都没有了 比如 表的创建以及一些配置项

2.下载后直接解压

seata1.4版本配置以及java配置
先进入conf打开registry.conf 把这个设置为nacos
seata1.4版本配置以及java配置
以及下面的配置文件去那里取 也是换成nacos
seata1.4版本配置以及java配置
再打开file.conf 设置mode为dbseata1.4版本配置以及java配置然后修改下面的db项
driverClassName 这个要看你mysql版本8以上就要加个cj 下面URL那里还要加时区一些东西 记得都加上
seata1.4版本配置以及java配置
账号密码啥的都不用多说
再创建数据库sql脚本都在md文件里面有写
seata1.4版本配置以及java配置
seata1.4版本配置以及java配置

-- -------------------------------- The script used when storeMode is 'db' ---------------------------------- the table to store GlobalSession dataCREATE 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 dataCREATE TABLE IF NOT EXISTS `branch_table`(    `branch_id`  BIGINTNOT 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 dataCREATE TABLE IF NOT EXISTS `lock_table`(    `row_key` VARCHAR(128) NOT NULL,    `xid`     VARCHAR(128),    `transaction_id` BIGINT,    `branch_id`      BIGINTNOT 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_and_branch_id` (`xid` , `branch_id`)) 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);

好配置完成现在点击bin目录下的seata-server.bat启动
去nacos看如果服务那里有seata-server这个就是启动成功;seata1.4版本配置以及java配置

3.接下来就是seata的配置文件了写入nacos里

文件名字是特定的在registry.conf 的config下的nacos配置一样有个dataId对应的就nacos里面的配置文件名seataServer.properties; 分组也要是一致的当然你可以自己修改
seata1.4版本配置以及java配置
seata1.4版本配置以及java配置
里面就是下面这样
seata1.4版本配置以及java配置
这里的配置项可以去官方的GitHub上的项目目录找seata1.4版本配置以及java配置
我这里就添一些常用的

transport.type=TCPtransport.server=NIOtransport.heartbeat=truetransport.enableClientBatchSendRequest=truetransport.threadFactory.bossThreadPrefix=NettyBosstransport.threadFactory.workerThreadPrefix=NettyServerNIOWorkertransport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandlertransport.threadFactory.shareBossWorker=falsetransport.threadFactory.clientSelectorThreadPrefix=NettyClientSelectortransport.threadFactory.clientSelectorThreadSize=1transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThreadtransport.threadFactory.bossThreadSize=1transport.threadFactory.workerThreadSize=defaulttransport.shutdown.wait=3transport.serialization=seatatransport.compressor=none# serverserver.recovery.committingRetryPeriod=1000server.recovery.asynCommittingRetryPeriod=1000server.recovery.rollbackingRetryPeriod=1000server.recovery.timeoutRetryPeriod=1000server.undo.logSaveDays=7server.undo.logDeletePeriod=86400000server.maxCommitRetryTimeout=-1server.maxRollbackRetryTimeout=-1server.rollbackRetryTimeoutUnlockEnable=falseserver.distributedLockExpireTime=10000# store#model改为dbstore.mode=dbstore.lock.mode=filestore.session.mode=file# store.publicKey=""store.file.dir=file_store/datastore.file.maxBranchSessionSize=16384store.file.maxGlobalSessionSize=512store.file.fileWriteBufferCacheSize=16384store.file.flushDiskMode=asyncstore.file.sessionReloadReadSize=100store.db.datasource=druidstore.db.dbType=mysql#修改数据驱动,这里是mysql8,使用mysql5的话请修改store.db.driverClassName=com.mysql.cj.jdbc.Driver# 改为上面创建的seata服务数据库store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC# 改为自己的数据库用户名store.db.user=root# 改为自己的数据库密码store.db.password=xu20010502store.db.minConn=5store.db.maxConn=30store.db.globalTable=global_tablestore.db.branchTable=branch_tablestore.db.distributedLockTable=distributed_lockstore.db.queryLimit=100store.db.lockTable=lock_tablestore.db.maxWait=5000store.redis.mode=singlestore.redis.single.host=127.0.0.1store.redis.single.port=6379# store.redis.sentinel.masterName=""# store.redis.sentinel.sentinelHosts=""store.redis.maxConn=10store.redis.minConn=1store.redis.maxTotal=100store.redis.database=0# store.redis.password=""store.redis.queryLimit=100# loglog.exceptionRate=100# metricsmetrics.enabled=falsemetrics.registryType=compactmetrics.exporterList=prometheusmetrics.exporterPrometheusPort=9898# service# 自己命名一个vgroupMappingservice.vgroupMapping.mygroup=defaultservice.default.grouplist=127.0.0.1:8091service.enableDegrade=falseservice.disableGlobalTransaction=false# clientclient.rm.asyncCommitBufferLimit=10000client.rm.lock.retryInterval=10client.rm.lock.retryTimes=30client.rm.lock.retryPolicyBranchRollbackOnConflict=trueclient.rm.reportRetryCount=5client.rm.tableMetaCheckEnable=falseclient.rm.tableMetaCheckerInterval=60000client.rm.sqlParserType=druidclient.rm.reportSuccessEnable=falseclient.rm.sagaBranchRegisterEnable=falseclient.rm.tccActionInterceptorOrder=-2147482648client.tm.commitRetryCount=5client.tm.rollbackRetryCount=5client.tm.defaultGlobalTransactionTimeout=60000client.tm.degradeCheck=falseclient.tm.degradeCheckAllowTimes=10client.tm.degradeCheckPeriod=2000client.tm.interceptorOrder=-2147482648client.undo.dataValidation=trueclient.undo.logSerialization=jacksonclient.undo.onlyCareUpdateColumns=trueclient.undo.logTable=undo_logclient.undo.compress.enable=trueclient.undo.compress.type=zipclient.undo.compress.threshold=64k

这里特别要注意的是这几个配置

# 自己命名一个vgroupMappingservice.vgroupMapping.mygroup=defaultservice.default.grouplist=127.0.0.1:8091service.enableDegrade=falseservice.disableGlobalTransaction=false

service.vgroupMapping.mygroup这个mygroup是可以自定义的看其他文章说加下划线的my_group会报错找不到所以建议用整个,后面的default是默认 也是可以改 但是!!!!!要和service.default.grouplist=127.0.0.1:8091的service后面的default一样 还要和conf里面的registry.conf 文件里面的cluster这个一样,都是可以修改 但是三者必须一样要不然也是报错;

接下来再添加一个配置文件dataId是service.vgroupMapping.mygroup也就是上面的配置文件的配置项 里面内容就default ;
seata1.4版本配置以及java配置
注意:配置的分組要和seataServer.properties一样

4.项目测试

pom.xml

           com.alibaba.cloud     spring-cloud-starter-alibaba-nacos-discovery             org.springframework.cloud      spring-cloud-starter-netflix-ribbon              org.springframework.cloud     spring-cloud-loadbalancer        com.alibaba.cloud     spring-cloud-starter-alibaba-seata               io.seata      seata-spring-boot-starter              io.seata     seata-spring-boot-starter     1.4.2        org.springframework.cloud     spring-cloud-starter-openfeign        org.springframework.boot     spring-boot-starter-web       org.springframework.boot     spring-boot-starter-actuator        org.springframework.boot     spring-boot-devtools     runtime     true       org.projectlombok     lombok     true       org.springframework.boot     spring-boot-starter-test     test       mysql     mysql-connector-java       com.baomidou     mybatis-plus-boot-starter     3.5.1       seata-domain-service     com.atguigu     1.0-SNAPSHOT     compile     
server:  port: 2021spring:  application:    name: seata-order-service  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/seata_order?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC    username: root    password: xu20010502  cloud:    nacos:      discovery: server-addr: localhost:8848 group: SEATA_GROUPseata:  tx-service-group: mygroup  service:    vgroup-mapping:      mygroup: default

这里要把服务注册到nacos上分组要和seata一样要不然读取不到配置文件
配置启动类

@SpringBootApplication@EnableDiscoveryClient //注册到nacos@EnableFeignClients //开启feign@EnableAutoDataSourceProxy//seata启用自动数据源代理@MapperScan("com.atguigu.*")public class seataservice2021Main {    public static void main(String[] args) { SpringApplication.run(seataservice2021Main.class, args);    }}

接下来启动服务
seata1.4版本配置以及java配置
启动成功

素描网