Dubbo启动时出现如下错误
ERROR Server:111 - [DUBBO] qos-server can not bind localhost:22222, dubbo version: 2.7.5, current host: 192.168.2.199
java.net.BindException: Address already in use: bind
是因为dubbo的提供方与消费方的 Qos的端口号 出现一致情况,默认为22222
解决办法:在Dubbo的配置文件中 配置Qos的绑定端口,所有的dubbo的Qos都不能相同,不论是消费者还是提供者
什么是Qos
Qos=Quality of Service,qos是Dubbo的在线运维命令,可以对服务进行动态的配置、控制及查询,Dubboo2.5.8新版本重构了telnet(telnet是从Dubbo2.0.5开始支持的)模块,提供了新的telnet命令支持,新版本的telnet端口与dubbo协议的端口是不同的端口,默认为22222,可以通过配置文件dubbo.properties修改。telnet 模块现在同时支持 http 协议和 telnet 协议,方便各种情况的使用。
QoS提供了一些启动参数,来对启动进行配置,他们主要包括:
参数 | 说明 | 默认值 |
---|---|---|
qosEnable | 是否启动QoS | true |
qosPort | 启动QoS绑定的端口 | 22222 |
qosAcceptForeignIp | 是否允许远程访问 | false |
QoS参数可以通过如下方式进行配置
JVM系统属性
dubbo.properties
XML方式
其中,上述方式的优先顺序为JVM系统属性 > dubbo.properties > XML
1. 使用系统属性方式进行配置
-Ddubbo.application.qos.enable=true
-Ddubbo.application.qos.port=33333
-Ddubbo.application.qos.accept.foreign.ip=false
2. 使用dubbo.properties文件进行配置
在项目的src/main/resources目录下添加dubbo.properties文件,内容如下:
dubbo.application.qos.enable=true
dubbo.application.qos.port=33333
dubbo.application.qos.accept.foreign.ip=false
3.使用XML方法进行配置
在Dubbo的XML配置文件中,加上如下Qos的配置
<!-- 提供方应用信息,用于计算依赖关系,qos.port默认22222 -->
<dubbo:application name="provider">
<dubbo:parameter key="qos.enable" value="true" />
<dubbo:parameter key="qos.accept.foreign.ip" value="false" />
<dubbo:parameter key="qos.port" value="22222" />
</dubbo:application>
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="cosumer">
<dubbo:parameter key="qos.enable" value="true" />
<dubbo:parameter key="qos.accept.foreign.ip" value="false" />
<dubbo:parameter key="qos.port" value="33333" />
</dubbo:application>
参考转载资料:https://blog.csdn.net/u012988901/article/details/84503672
如有描述不当地方,热烈欢迎大神们赐教。