seata 集成报错记录seata no available service ‘null‘ found, please make sure registry config correct
seata 集成 报错记录 seata no available service ‘null’ found, please make sure registry config correct环境在自己本地环境进行集成后GlobalTransaction 能生效, 同样的代码在公司的测试环境进行seata集成,报错 “seata no available service ‘null’ found,
seata 集成报错记录 seata no available service ‘null’ found, please make sure registry config correct
环境
- springcloud + nacos 1.4.1 + seata 1.4.2
- 并且seata使用naocs进行服务治理和配置管理
- config.txt配置内容
service.vgroupMapping.intellsite-system-group=default
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://修改数据库IP:3306/ry-seata?useUnicode=true
store.db.user=root
store.db.password=修改数据库密码
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
client.undo.logSerialization=kryo
- client端yaml配置
# spring配置
spring:
datasource:
druid:
stat-view-servlet:
enabled: true
loginUsername: admin
loginPassword: 123456
dynamic:
druid:
initial-size: 5
min-idle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,wall,slf4j
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
# 主库数据源
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://数据库IP:3306/intellsite?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 修改密码
# 从库数据源
# seata_order数据源
order:
username: root
password: 修改密码
url: jdbc:mysql://数据库IP:3306/seata_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
# seata_account数据源
account:
username: root
password: 修改密码
url: jdbc:mysql://数据库IP:3306/seata_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
# seata_product数据源
product:
username: root
password: 修改密码
url: jdbc:mysql://数据库IP:3306/seata_product?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
#开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭
seata: true
# seata配置
seata:
# 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启
enabled: true
# Seata 应用编号,默认为 ${spring.application.name}
application-id: ${spring.application.name}
# Seata 事务组编号,用于 TC 集群名
tx-service-group: ${spring.application.name}-group
# 关闭自动代理
enable-auto-data-source-proxy: false
# 服务配置项
service:
# 虚拟组和分组的映射
vgroup-mapping:
intellsite-system-group: default
config:
type: nacos
nacos:
serverAddr: 127.0.0.1:8848
group: SEATA_GROUP
namespace:
registry:
type: nacos
nacos:
application: seata-server
server-addr: 127.0.0.1:8848
namespace:
在自己本地环境进行集成后GlobalTransaction 能生效, 同样的代码在公司的测试环境进行seata集成,报错 “seata no available service ‘null’ found, please make sure registry config correct”,
网上找了说是配置的问题,检查了配置和本地的完全没有变,突然一天晚上睡觉前想到一个地方可能有点问题,第二天试了一下果然解决了。
原因
自己本地和公司测试环境用的nacos是同一个数据库,自己在本地执行了 nacos-config.sh , 并在nacos中生成了对应的seata配置,所有在测试环境就没有再执行 nacos-config.sh 脚本,导致测试环境的nacos检查不到对应的配置,故报错service为“null”
处理
在测试环境重新执行了 nacos-config.sh脚本,使nacos重新添加配置到nacos中
得到经验
nacos的配置通过其他方法修改了配置(如直接修改数据库,或通过其他同数据库的nacos进行编辑),nacos没法生效,必须在当前nacos的控制台进行新增或编辑,或将已经有的点编辑,不修改任何配置,直接点发布,让当前环境的nacos检查到配置的变化
更多推荐
所有评论(0)