springboot+dubbo配置走过的坑

12月4号:

接收一个springboot项目,需要加上我们的dubbo服务接口(消费者):

起初在网上找到的配置(如下):

spring:
    dubbo :  
        application :   
            name : hello-world-app
        registry :  
            address : zookeeper://127.0.0.1:2181  
        scan: com.ibigsea.dubbo_provider.impl

但我们的zk是多个地址,所以我把 address: zookeeper:// 192.168.1.236:3181,192.168.1.237:3181,192.168.1.237:3182,这样的做法是错误的,

运行会报:java.exception.Number**的错,这个就不截图了,有兴趣可以试试。

        正确的zk多个地址配置如下(记得把开头spring加上,我懒就不加了):

dubbo:
        application:
            name: qb-api-manager
            registries[0]:
                address: zookeeper://192.168.1.236:3181
            registries[1]:
                address: zookeeper://192.168.1.237:3181
            registries[2]:
                address: zookeeper://192.168.1.237:3182
        scan: com.qb.api.manager.modules.web.service

        加载正确的日志如下,可以看见dubbo加载(红框部分):



看日志很重要,红框部分在说明加载成功,另外我想说一下scan(scanner扫描)属性,网上好多人说scan指的是扫描dubbo接口所在的package,经测试这是错误的,如下图(zk加载日志没有出现),而且程序运行接口对象为null,所以scan接口为:dubbo接口对象所在类的package。



举个例子:接口A在com.vc.strong包下,你的功能cn.test.B类用了dubbo映射的A接口对象,那么你的scan应该配置成cn.test,而不是com.vc.strong;配置对了日志就是对的,配置错了日志中zkclient就不会出现。

另外还有其他网友说的调整接口引用类的位置(Controller和Service的位置),因为运行后接口对象为null,这个问题的根本是scan写错了,所以只需写对scan。


还有配置完全正确但是接口对象仍然为null的问题,Application不要集成任何类,只使用@SpringBootApplication即可。如下图:



最后如果不知道写配置,请在IDE中手动打开DubboProperties类,查看源码:






猜你喜欢

转载自blog.csdn.net/vcstrong/article/details/78712647