版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
在做分布式事务seata版本升级的时候报错,内容如下:
Exception in thread "main" io.seata.common.exception.NotSupportYetException: not support register type: null
at io.seata.config.ConfigurationFactory.buildConfiguration(ConfigurationFactory.java:80)
at io.seata.config.ConfigurationFactory.getInstance(ConfigurationFactory.java:65)
at io.seata.server.metrics.MetricsManager.init(MetricsManager.java:49)
at io.seata.server.Server.main(Server.java:56)
Caused by: java.lang.IllegalArgumentException: illegal type:null
at io.seata.config.ConfigType.getType(ConfigType.java:62)
at io.seata.config.ConfigurationFactory.buildConfiguration(ConfigurationFactory.java:78)
... 3 more
这个是因为分布式事务在启动的时候环境变量 SEATA_CONFIG_ENV
的配置问题,解决有两种方法:一个是先声明环境变量,然后把registry.conf 文件改成 registry-环境变量.conf,然后启动;二是提起在配置文件中修改,启动时候直接加载配置即可。
我这边采用的是第一种:
echo "export SEATA_CONFIG_ENV=dev" >> /etc/profile
source /etc/profile
mv registry.conf registry-dev.conf
##启动,端口是我自己在file.conf 文件修改的,默认是8091
nohup sh seata-server.sh --host 192.168.16.190 --port 8092 &
在启动jar包的时候这边是通过环境变量的方式来连接各个环境的分布式事务,启动脚本如下:
#!/bin/sh
export SEATA_CONFIG_ENV=dev
nohup java -jar -Xms512m -Xmx1024m test-service.jar -DseataConfigEnv=dev &
在java源码里面,要指定不通环境的配置文件:
### cat file-dev.conf
transport {
# tcp udt unix-domain-socket
type = "TCP"
#NIO NATIVE
server = "NIO"
#enable heartbeat
heartbeat = true
#thread factory for netty
thread-factory {
boss-thread-prefix = "NettyBoss"
worker-thread-prefix = "NettyServerNIOWorker"
server-executor-thread-prefix = "NettyServerBizHandler"
share-boss-worker = false
client-selector-thread-prefix = "NettyClientSelector"
client-selector-thread-size = 1
client-worker-thread-prefix = "NettyClientWorkerThread"
# netty boss thread size,will not be used for UDT
boss-thread-size = 1
#auto default pin or 8
worker-thread-size = 8
}
}
service {
#vgroup->rgroup
vgroup_mapping.ocss-service="default"
#only support single node
default.grouplist = "0.0.0.0:8092"
#degrade current not support
enableDegrade = false
#disable
disable = false
disableGlobalTransaction = false
}
client {
async.commit.buffer.limit = 10000
lock {
retry.internal = 10
retry.times = 30
}
}
### cat registry-dev.conf
registry {
# file 、nacos 、eureka、redis、zk
type = "file"
nacos {
serverAddr = "localhost"
namespace = "public"
cluster = "default"
}
file {
name = "file-dev.conf"
}
}
config {
# file、nacos 、apollo、zk
type = "file"
file {
name = "file-dev.conf"
}
}