在做分佈式事務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"
}
}