dubbo直接代码下使用multicast组播注册中心报错:No provider available for the service

服务端代码:

public class DubboMulticastServer {
    public static void main(String[] args) throws IOException {
        //应用配置
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("user-server");

        //配置中心
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setProtocol("multicast");
        registryConfig.setAddress("224.5.6.7:1234");
        //端口
        ProtocolConfig protocolConfig = new ProtocolConfig();
        protocolConfig.setName("dubbo");
        protocolConfig.setPort(-1);

        ServiceConfig serviceConfig = new ServiceConfig();
        serviceConfig.setApplication(applicationConfig);
        serviceConfig.setRegistry(registryConfig);
        serviceConfig.setProtocol(protocolConfig);
        serviceConfig.setInterface(UserService.class);
        //serviceConfig.setInterface("com.test.client.UserService");
        serviceConfig.setRef(new UserServiceImpl());
        serviceConfig.export();

        System.out.println("multicast:服务已暴露");
        System.in.read(new byte[1024]);
    }
}

消费端代码:

public class DubboMulticastClient {
    public static void main(String[] args) throws IOException {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("user-client");
        //指定注册中心
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setProtocol("multicast");
        registryConfig.setAddress("224.5.6.7:1234");

        ReferenceConfig referenceConfig = new ReferenceConfig();
        referenceConfig.setApplication(applicationConfig);
        referenceConfig.setRegistry(registryConfig);
        referenceConfig.setInterface(UserService.class);
        UserService userService = (UserService) referenceConfig.get();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        while (true) {
            if (bufferedReader.readLine().equals("quit")) {
                break;
            }
            System.out.println(userService.getUser(1));
        }

    }
}

服务端启动日志信息

信息:  [DUBBO] Register dubbo service com.test.client.UserService url dubbo://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&bind.ip=192.168.182.1&bind.port=20880&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809 to registry registry://224.5.6.7:1234/org.apache.dubbo.registry.RegistryService?application=user-server&dubbo=2.0.2&pid=11580&registry=multicast&release=2.7.4.1&timestamp=1586686322768, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:05 下午 org.apache.dubbo.qos.server.Server info
信息:  [DUBBO] qos-server bind localhost:22222, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:05 下午 org.apache.dubbo.remoting.transport.AbstractServer info
信息:  [DUBBO] Start NettyServer bind /0.0.0.0:20880, export /192.168.182.1:20880, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:06 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Register: dubbo://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:06 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Send multicast message: register dubbo://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809 to /224.5.6.7:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:06 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Subscribe: provider://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&bind.ip=192.168.182.1&bind.port=20880&category=configurators&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:06 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: register dubbo://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:06 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Send multicast message: subscribe provider://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&bind.ip=192.168.182.1&bind.port=20880&category=configurators&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809 to /224.5.6.7:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:06 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: subscribe provider://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&bind.ip=192.168.182.1&bind.port=20880&category=configurators&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:12:07 下午 org.apache.dubbo.registry.multicast.MulticastRegistry warn
警告:  [DUBBO] Ignore empty notify urls for subscribe url provider://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&bind.ip=192.168.182.1&bind.port=20880&category=configurators&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809, dubbo version: 2.7.4.1, current host: 192.168.182.1
multicast:服务已暴露

消费端启动日志信息:

信息:  [DUBBO] Register: consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=consumers&check=false&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:47 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Send multicast message: register consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=consumers&check=false&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834 to /224.5.6.7:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:47 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: register consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=consumers&check=false&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:47 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Subscribe: consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=providers,configurators,routers&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:47 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Send multicast message: subscribe consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=providers,configurators,routers&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834 to /224.5.6.7:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:47 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: subscribe consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=providers,configurators,routers&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:48 下午 org.apache.dubbo.registry.multicast.MulticastRegistry warn
警告:  [DUBBO] Ignore empty notify urls for subscribe url consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=providers,configurators,routers&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834, dubbo version: 2.7.4.1, current host: 192.168.182.1
Exception in thread "main" java.lang.IllegalStateException: Failed to check the status of the service com.test.client.UserService. No provider available for the service com.test.client.UserService from the url multicast://224.5.6.7:1234/org.apache.dubbo.registry.RegistryService?application=user-client&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&register.ip=192.168.182.1&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834 to the consumer 192.168.182.1 use dubbo version 2.7.4.1
	at org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:418)
	at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:329)
	at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:250)
	at com.test.service.DubboMulticastClient.main(DubboMulticastClient.java:31)

Process finished with exit code 1

消费端启动时,服务端打印的信息:

四月 12, 2020 6:19:47 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: register dubbo://192.168.182.1:20881/com.test.client.UserService?anyhost=true&application=user-server&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=13988&release=2.7.4.1&side=provider&timestamp=1586686700019 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:47 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: register dubbo://192.168.182.1:20880/com.test.client.UserService?anyhost=true&application=user-server&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.test.client.UserService&methods=getUser&pid=11580&release=2.7.4.1&side=provider&timestamp=1586686322809 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:48 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: unregister consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=consumers&check=false&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:48 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: unregister consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=providers,configurators,routers&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1
四月 12, 2020 6:19:48 下午 org.apache.dubbo.registry.multicast.MulticastRegistry info
信息:  [DUBBO] Receive multicast message: unsubscribe consumer://192.168.182.1/com.test.client.UserService?application=user-client&category=providers,configurators,routers&dubbo=2.0.2&interface=com.test.client.UserService&lazy=false&methods=getUser&pid=6944&release=2.7.4.1&side=consumer&sticky=false&timestamp=1586686784834 from /127.0.0.1:1234, dubbo version: 2.7.4.1, current host: 192.168.182.1

本机环境:

1、安装了vmware虚拟机:centos7

2、网络:wifi

排错定位:

1、项目配置没有问题

尝试解决方案:

关闭vmware虚拟机网卡

重启server和client。但是结果还是失败。

然后通过查阅资料:建议说换zookeeper,multicast不稳定


版权声明:本文为yanwanwan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。