微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot2.3.4集成Dubbo2.7.10经验

最近,在准备着手学习和尝试整理dubbo框架。
虽然网上例子较多,但是较多是偏向于老的版本。自己着手动手实践了下。
一、Demo结构
1、dubbo-interface 仅定义接口

在这里插入图片描述

接口类:

在这里插入图片描述

Pom文件

在这里插入图片描述

2、dubbo-provider 服务提供者

在这里插入图片描述

服务类实现
注意使用了@dubboService,这里仅标记了服务版本。需要配合dubbo.scan.base-packages

在这里插入图片描述


在这里插入图片描述


Pom文件

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<groupId>com.jmj</groupId>
<artifactId>dubbo-provider</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
    <!-- dubbo Spring Boot Starter -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.10</version>
    </dependency>
   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>2.3.4.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>3.3.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>3.3.0</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <version>2.3.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.6.3</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.jmj.service</groupId>
        <artifactId>dubbo-interface</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
        <scope>compile</scope>
    </dependency>
</dependencies>
![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210525184146973.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM1ODY3Njc=,size_16,color_FFFFFF,t_70)

3、dubbo-consumer 消费端

在这里插入图片描述


控制端调用

在这里插入图片描述


在这里插入图片描述


Pom文件

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<groupId>com.jmj.consumer</groupId>
<artifactId>dubbo-consumer</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.10</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <version>2.3.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>3.3.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.3.4.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.jmj.service</groupId>
        <artifactId>dubbo-interface</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>RELEASE</version>
        <scope>compile</scope>
    </dependency>

</dependencies>
![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210525184350874.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM1ODY3Njc=,size_16,color_FFFFFF,t_70)

二、软件版本
1、dubbo-spring-boot的地址,版本号2.7.10
dubbo-spring-boot-project/application.properties at master · apache/dubbo-spring-boot-project · GitHub
原始有些文章较老,刚开始我单纯以文章中提及用使用com.alibaba.boot下,dubbo-spring-boot-starter,弄到后面会因为和spring-boot-web版本不兼容出现,类似”ConfigFileApplciation.Listener does not define or inherit an implmentin of …”的错误

在这里插入图片描述


2、zookeeper 版本3.6.2
maven 中依赖使用org.apache.zookeeper 2.7.10 版本
注意要在maven的依赖中,去掉org.slf4jslf4j-log4j12

在这里插入图片描述


3、spring-boot-web-starter 2.3.4 ,用途么就是写一个controller 用来模拟请求调用接口

在这里插入图片描述


三、使用注解
1、@EnableAutoConfiguration与@SpringBootApplcation是有区别,具体原理还有待学习理解。
我盲目的按照GitHub - apache/dubbo-spring-boot-project: Spring Boot Project for Apache dubbo 地址上实例去使用@EnableAutoConfiguration注解后,启动项目发现会提示缺少SpringMVC视图控制器等组件的,以及CommandLineRunner的实现类都不会被调用

在这里插入图片描述


2、@Enabledubbo和@EnabledubboConfig注解
这个2个注解区别
@Enabledubbo包含了@EnabledubboConfig
@EnabledubboConfig 提供了外部化配置与dubbo配置之类之间绑定,其中multiple 属性表示是否支持dubbo 配置;2.5.9为false,2.7.3为true
1)、@EnabledubboConfig是启动服务
@EnabledubboConfig 提供了外部化配置与dubbo配置类之间绑定
Multiple表示是否支持dubbo配置
2)、@Enabledubbo也是启动服务
@Enabledubbo 注解包含了@EnabledubboConfig和@dubboComponentScan
@dubboComponentScan是在2.5.6版本dubbo中加入,它扫描时候仅关注@Service和@Reference注解,除了将dubbo @Service类暴露dubbo服务外,还将Spring Bean @Reference字段或者方法注入dubbo代理
但是若@Reference字段所声明类不是Spring Bean,@dubboComponentScan不会扫描该@Reference注入,原理参考Spring的@Autowired

3、@EnableCache 有些文档建议在生产段加上,开启缓存。
四、问题:
1、Caused by: java.lang.IllegalStateException: Failed to check the status of the service com.jmj.service.StudentService. No provider available for the service com.jmj.service.StudentService from the url dubbo://192.168.52.1/com.jmj.service.StudentService?application=springboot-dubbo-consumer&dubbo=2.0.2&init=false&interface=com.jmj.service.StudentService&Metadata-type=remote&methods=getStudentAllCount&pid=25488&qos.enable=false&register.ip=192.168.52.1&release=2.7.10&side=consumer&sticky=false&timestamp=1621919748309 to the consumer 192.168.52.1 use dubbo version 2.7.10
或者报No provider available for the service …
原因:服务提供方没有在配置文件中设置dubbo.scan.base-packages 导致。
2、Caused by :log4j-slf4j-impl cannot by present with log4j-to-slf4j
存在包冲突
需要排除:

在这里插入图片描述


3、No registry config found or it’s not a valid config! The registry config is…
原因:因为我根据文章配置的注册中心的地址属性错误
Spring.dubbo.registry=地址
实际上是

在这里插入图片描述


4、出现提示少CuratorWatcher类
经过查询显示为curator是zookeeper的客户端框架

在这里插入图片描述


五、结果
最后访问成功:

在这里插入图片描述


注解部分参考来源
(45条消息) @EnabledubboConfiguration 与 @Enabledubbo 的区别_胡歌粉丝的博客-CSDN博客

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐