ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring Boot2.3.4集成Dubbo2.7.10经验

2021-05-25 19:05:46  阅读:357  来源: 互联网

标签:10 Boot2.3 dubbo Spring boot spring apache org starter


最近,在准备着手学习和尝试整理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博客

标签:10,Boot2.3,dubbo,Spring,boot,spring,apache,org,starter
来源: https://blog.csdn.net/u013586767/article/details/117262035

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有