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

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

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

qq交流群导航——>231378628

 

一、新增依赖

向父工程新增依赖



    4.0.0
    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.12.RELEASE
         
    


    
    
        demo-provider
        demo-consumer1
        demo-api
    

    
    
        pom
    

    com.example
    nacosdemonew
    0.0.1-SNAPSHOT
    nacosdemonew
    Demo project for SpringCloud Alibaba
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            2.2.7.RELEASE
        

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
            2.2.7.RELEASE
        

        
            org.projectlombok
            lombok
            true
        

        
            com.alibaba.cloud
            spring-cloud-starter-dubbo
            2.2.7.RELEASE
            
                
                    org.springframework
                    spring
                
            
        

        
            com.alibaba.spring
            spring-context-support
            1.0.11
        

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


新增了


    com.alibaba.cloud
    spring-cloud-starter-dubbo
    2.2.7.RELEASE
    
        
            org.springframework
            spring
        
    



    com.alibaba.spring
    spring-context-support
    1.0.11

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

二、新增Api服务

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

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)_第1张图片

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)_第2张图片 

三、改造服务提供方

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)_第3张图片

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

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)_第4张图片

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

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

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

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

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

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

四、改造服务消费方

1、修改配置文件

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)_第7张图片

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

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

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

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)_第8张图片

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

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

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)_第9张图片

五、测试

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

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCPeuKZgA==,size_20,color_FFFFFF,t_70,g_se,x_16

2、通过postman测试

【五】SpringCloud Alibaba之整合Dubbo(实现远程调用)_第10张图片

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

 

你可能感兴趣的:(springCloud,Alibaba,spring,cloud,rpc,zookeeper)