Seata1.3.0版本踩坑
目录
问题描述
SpringColud集成Seata1.3.0,Seata是部署在服务器上的,并且注册到Nacos上。报错无法连接到Seata问题endpoint format should like ip:port
然后引出问题二。
错误
问题一(Failed to get available servers: endpoint format should like ip:port)
在编译启动时发现clusterName : "null"
经过检测发现Nacos
中service.vgroupMapping.my_test_tx_group
<—(就是这里),和项目的中的配置文件不一样。
挖槽多了一个s,小问题不慌。
项目正常启动了,结果发现出现了一个新的的问题,就是问题二的 0304 register RM failed或者0101 can not connect
。
问题二(NettyClientChannelManager : 0304 register RM failed或者0101 can not connect)
经过排查发现在Nacos
中seata-server
注册的端口出现了问题,注册的是内网IP,那就简单了要么内网穿透,要么指定IP端启动。
nohup sh seata-server.sh -h '公网IP' -p 8091 > seata.log 2>&1 &
,问题解决了nacos
中也是公网IP这样子可以连接了。测试一下般高版本比如1.6.2
的Seata就不会出现这种问题。
本以为这样就可以成功了,结果还是报错。经过排查发现,Nacos
中的的配置出现了问题,里面是配置正是127.0.0.1:8091
。
改了Nacos
地址后发现还是一直在读取本127.0.0.1:8091
,难道不是从远程Nacos
获取的嘛?经过测验发现,确实是读取的远程Nacos
的配置,唯独service.default.grouplist
里面的配置木有读取到。挖槽?我****,你****!
最终解决办法在对应的项目里的文件添加如下配置(可能会有其他办法目前还没有找到):
seata:
application-id: ${spring.application.name}
tx-service-group: my_test_tx_group
config:
type: nacos
nacos:
#需要和server在同一个注册中心下
serverAddr: nacosIP:8848
#需要server端(registry和config)、nacos配置client端(registry和config)保持一致
group: SEATA_GROUP
registry:
type: nacos
nacos:
#需要和server端保持一致,即server在nacos中的名称,默认为seata-server
application: seata-server
serverAddr: nacosIP:8848
#需要server端(registry和config)、nacos配置client端(registry和config)保持一致
group: SEATA_GROUP
总结
Seata1.3.0,我****,你****!😡🔥