• springboot+zookeepr+dubbo的远程服务调用


    首先一定确保zookeeper正常工作

    公共接口模块

    为了简化代码,可以把需要其他服务调用的接口,抽取为公共接口模块dubbo-common-service,

    public interface TestService {
        public String clientTest();
    }
    
    
    • 1
    • 2
    • 3
    • 4

    服务提供方

    导入dubbo、zookeeper依赖

            <dependency>
                <groupId>org.apache.dubbogroupId>
                <artifactId>dubbo-spring-boot-starterartifactId>
                <version>3.0.5version>
            dependency>
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-frameworkartifactId>
                <version>5.2.0version>
            dependency>
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-recipesartifactId>
                <version>5.2.0version>
            dependency>
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-x-discoveryartifactId>
                <version>5.2.0version>
            dependency>
    		
            <dependency>
                <groupId>com.pshgroupId>
                <artifactId>dubbo-common-serviceartifactId>
                <version>1.0version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    配置文件为:

    server:
      port: 6610 #端口
    dubbo:
      application:
        name: dubbo-client #别名
      registry:
        address: zookeeper://192.168.158.159:2181  #zookeeper 地址 + 端口
        timeout: 230000  # 如果zookeeper是放在远程服务器上超时时间请设置长一些,不然很容易超时连接失败
      protocol:
        port: 20881  # 不同服务使用不同端口,不然会报错
        name: dubbo
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    提供方实现接口并暴露服务,在接口实现类增加@DubboService

    @DubboService
    public class ClientServiceImpl implements TestService {
        @Override
        public String clientTest() {
            return "远程调用成功";
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    启动类加上@EnableDubbo

    @EnableDubbo
    @SpringBootApplication
    public class DubboApplicationClient {
        public static void main(String[] args) {
            SpringApplication.run(DubboApplicationClient.class);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    接口调用方

            <dependency>
                <groupId>org.apache.dubbogroupId>
                <artifactId>dubbo-spring-boot-starterartifactId>
                <version>3.0.5version>
            dependency>
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-frameworkartifactId>
                <version>5.2.0version>
            dependency>
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-recipesartifactId>
                <version>5.2.0version>
            dependency>
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-x-discoveryartifactId>
                <version>5.2.0version>
            dependency>
            <dependency>
                <groupId>com.pshgroupId>
                <artifactId>dubbo-common-serviceartifactId>
                <version>1.0version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    server:
      port: 6620
    
    
    dubbo:
      application:
        name: dubbo-client #别名
      registry:
        address: zookeeper://192.168.158.159:2181  #zookeeper 地址 + 端口
        timeout: 230000  # 如果zookeeper是放在远程服务器上超时时间请设置长一些,不然很容易超时连接失败
      protocol:
        port: 20882  # 不同服务使用不同端口,不然会报错
        name: dubbo
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    启动类

    @EnableDubbo
    @SpringBootApplication
    public class DubboApplicationServer {
        public static void main(String[] args) {
            SpringApplication.run(DubboApplicationServer.class);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    controller接口

    @RestController
    public class DubooServerApplication {
    
    
        @Autowired
        private ServerService serverService;
    
        @GetMapping("/test")
        public String test(String name){
            return serverService.serverTest(name);
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    通过本服务的Service 来远程调用接口

    public interface ServerService {
    
        public String serverTest(String name) ;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    @Service
    public class ServerServiceImpl implements ServerService {
    
        @DubboReference
        private TestService testService;
    
    
        public String serverTest(String name) {
            return "返回结果为:"+testService.clientTest()+",参数为:"+name;
        }
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    访问controller接口,得到:
    请添加图片描述

    远程调用成功

  • 相关阅读:
    使用Python CV2自动识别人脸并融合至新图片
    最新AI创作系统ChatGPT源码+搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持Prompt
    023-从零搭建微服务-推送服务(三)
    传统企业如何实现数字化转型?
    嵌入式5. ARM指令集详解
    从pcap文件中提取pcma音频
    开放科学背景下的科学数据开放共享:国家青藏高原科学数据中心的实践
    私有云OpenStack保姆级教学
    centos7 快速搭建自测mysql环境 docker + mysql
    Unity数字孪生教程:系统如何架构?
  • 原文地址:https://blog.csdn.net/persistence_PSH/article/details/128166984