情况一、在使用广播模式时候,发现服务端能启动,但是客户端rpc调用会失败,发现不了注册中心的服务,进而调不到远程接口,而且直接报错,连测试代码都没走
1、原代码配置
1.1 provider端配置
# Dubbo 广播方式配置
dubbo:
application:
name: xxx
version: 1.0.0
registry:
address: multicast://224.5.6.7:1234
protocol:
name: dubbo
port: 20880
scan:
base-packages: xxx
1.2、consumer端配置
# Dubbo 广播方式配置
dubbo:
application:
name: xxx
version: 1.0.0
registry:
address: multicast://224.5.6.7:1234
protocol:
name: dubbo
port: 20880
生产者端能启动,但是消费者端调用测试代码,没有执行测试代码。直接报错
情况二、修改代码和配置文件,把广播模式改为直连模式,运行正确
2、配置文件修改
2.1 provider端配置
# Dubbo 广播方式配置
dubbo:
application:
name: xxx
version: 1.0.0
registry:
address: N/A
protocol:
name: dubbo
port: 20880
scan:
base-packages: xxx
1.2、consumer端配置
# Dubbo 广播方式配置
dubbo:
application:
name: xxx
version: 1.0.0
registry:
address: multicast://224.5.6.7:1234
protocol:
name: dubbo
port: 20880
在测试类中注入远程接口的时候加上调用服务的地址和端口,就是消费者端的dubbo开启的地址和端口。直接连接调用。测试结果正确。
处理方法
仔细阅读官网文档发现问题所在:
设置如下:
# Dubbo 广播方式配置
dubbo:
application:
name: xxx
version: 1.0.0
parameters:
unicast: false
registry:
address: multicast://224.5.6.7:1234
protocol:
name: dubbo
port: 20880
最后问题解决