【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

导读:本篇文章讲解 【五】SpringCloud Alibaba之整合Dubbo(实现远程调用),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Dubbo是一个PCR远程服务调用框架,前面我们使用的RestTemplate进行的服务调用,但是Dubbo相比起来优势更大,本章进行整合dubbo。

注意:前面一章节进行了项目结构重构,本章节是在重构之后的基础上进行的改造。(已经将1,2,3章节的代码复制到第四章节的空项目结构上)。

一、新增依赖

向父工程新增依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--  springboot的依赖  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>


    <!-- 关联子模块  -->
    <modules>
        <module>demo-provider</module>
        <module>demo-consumer1</module>
        <module>demo-api</module>
    </modules>

    <!--   父工程的包设置为pom   -->
    <packaging>
        pom
    </packaging>

    <groupId>com.example</groupId>
    <artifactId>nacosdemonew</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacosdemonew</name>
    <description>Demo project for SpringCloud Alibaba</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
            <version>2.2.7.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.alibaba.spring</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>1.0.11</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

新增了

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-dubbo</artifactId>
    <version>2.2.7.RELEASE</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>com.alibaba.spring</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>1.0.11</version>
</dependency>

注意:要排除 org.springframework.spring和引入上面的support依赖否则要报错(这个坑搞了一天)。

二、新增Api服务

新建一个APi子工程,专门存放远程调用的接口,如下图:

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用) 

三、改造服务提供方

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

1、新增一个远程调用接口的实现类,实现上面在Api服务新增的接口,用Dubbo的DubboService注解,表示这是一个Dubbo的service层

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

2、在启动类新增一个开启Dubbo的注解

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用) 3、修改配置类

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用) 设置如上参数,为了方便,我把dubbo的name设置为了spring的name同名。

scan的base-packages的值为dubboservice注解所在的实现类的路径,格式如上图。

protocol等参数默认上图的设置即可。

registry.address的设置也默认上图。

四、改造服务消费方

1、修改配置文件

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

每个服务都可以作为服务消费者和提供者,所有都可以设置base-packages设置dubboservice注解的接口实现类。

 subscribed-services则是填写调用服务端的名称,一定要写正确,否则会报错。

2、修改controller,新增一个测试Dubbo的接口

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

通过@DubboReference注解注入Api服务的TestService接口类,新写一个方法调用接口类的方法,如上图。 

3、在启动类新增一个开启Dubbo的注解

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

五、测试

1、运行服务提供方和消费方两个服务。

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

2、通过postman测试

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)

调用成功,在consumer服务调用api服务的接口(中间过程)成功返回provider服务的实现类里面的逻辑处理结果。 

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/12763.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!