dubbo+spring在多个微服务时候出现 - RpcException & Failed to bind to: /0.0.0.0:20880
参考资料实现dubbo随机端口,解决重启Address already in use异常Dubbo动态改变端口配置问题重现所以,话说,指定的 dubbo的provider端口完全无效。。。问题解决方案请用 system.setProperty预先设置dubbo参数。优化如果直接写死是很不优雅的,所以,可以这样优化一下:publ...
·
参考资料
实现dubbo随机端口,解决重启Address already in use异常
问题重现
所以,话说,指定的 dubbo的provider端口完全无效。。。
问题解决方案
请用 system.setProperty预先设置dubbo参数。
优化
如果直接写死是很不优雅的,所以,可以这样优化一下:
public static void initDubboConfig() {
Properties config=new Properties();
try {
InputStream in = ClassLoader.getSystemResourceAsStream("conf/env/dubbo.properties");
InputStreamReader is = new InputStreamReader(in, "utf-8");
config.load(is);
is.close();
in.close();
System.setProperty("dubbo.protocol.port", config.get("dubbo.port").toString());
System.setProperty("dubbo.registry.address", config.get("dubbo.address").toString());
System.setProperty("dubbo.protocol.name", config.get("dubbo.protocol").toString());
}
catch (Exception ed){
ed.printStackTrace();
}
}
持续优化
索性将必要的dubbo参数都提取出来,彻底优化:
dubbo.properties:
###---同一个微服务参数---###
#注意,不同的微服务它本身的application的名字应该要不一样的。
dubbo.application.name = micro-account-consumer
dubbo.application.owner = programmer
dubbo.application.organization = dubbox
###---同一个微服务下面不同的环境之间的参数差异,注意,端口可以不一样,地址也可以不一样---###
#特别注意,不同的微服务要有不同的服务提供者端口。dubbo.protocol.port,否则会被视为冲突的。
dubbo.port = 20882
#注意,不同环境下,address 地址应该是不一样的。
dubbo.address = zookeeper://localhost:2181
dubbo.protocol = dubbo
public static void initDubboConfig() {
Properties config=new Properties();
try {
InputStream in = ClassLoader.getSystemResourceAsStream("conf/env/dubbo.properties");
InputStreamReader is = new InputStreamReader(in, "utf-8");
config.load(is);
is.close();
in.close();
System.setProperty("dubbo.application.name", config.get("dubbo.application.name").toString());
System.setProperty("dubbo.application.owner", config.get("dubbo.application.owner").toString());
System.setProperty("dubbo.application.organization", config.get("dubbo.application.organization").toString());
System.setProperty("dubbo.protocol.port", config.get("dubbo.port").toString());
System.setProperty("dubbo.registry.address", config.get("dubbo.address").toString());
System.setProperty("dubbo.protocol.name", config.get("dubbo.protocol").toString());
}
catch (Exception ed){
ed.printStackTrace();
}
}
provider.xml内容:
provider.java:
public static void initDubboConfig() {
Properties config=new Properties();
try {
InputStream in = ClassLoader.getSystemResourceAsStream("conf/env/dubbo.properties");
InputStreamReader is = new InputStreamReader(in, "utf-8");
config.load(is);
is.close();
in.close();
System.setProperty("dubbo.application.name", config.get("dubbo.application.name").toString());
System.setProperty("dubbo.application.owner", config.get("dubbo.application.owner").toString());
System.setProperty("dubbo.application.organization", config.get("dubbo.application.organization").toString());
System.setProperty("dubbo.protocol.port", config.get("dubbo.port").toString());
System.setProperty("dubbo.registry.address", config.get("dubbo.address").toString());
System.setProperty("dubbo.protocol.name", config.get("dubbo.protocol").toString());
}
catch (Exception ed){
ed.printStackTrace();
}
}
小结
1、在配置环境时候各种小问题小bug实在是层出不穷。
2、某种架构某种结构的落地落实是需要大量时间及逐步调试来实现的。
更多推荐
已为社区贡献5条内容
所有评论(0)