[DUBBO] qos-server can not bind localhost:22222端口已占用错误解决

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

如有描述不当地方,热烈欢迎大神们赐教。

你可能感兴趣的:(服务器)