• Dubbo入门前功课,spring boot 实现RPC 远程调用


    个人理解:Dubbo是一个实现了复杂功能的RPC框架

    写一个简单的demo 来了解下RPC http调用

    新建一个spring项目 三个子模块 服务提供者provider、服务调用者consumer、接口service,

    service定义个实体类 user

    package com.example.dubbodemoservice;
    
    public class User {
        private String name;
    
        public User(String name){
            this.name= name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    提供者 需要提供项目依赖 才能获取到user类

    ProviderService
    package com.example.dubbodemoprovider;
    
    
    import com.example.dubbodemoservice.User;
    import org.springframework.stereotype.Service;
    
    @Service
    public class ProviderService {
        public User getUser() {
            return new User("tesRpc") {
            };
        }
    }

    controller

    package com.example.dubbodemoprovider;
    
    
    import com.example.dubbodemoservice.User;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("/provider")
    public class ProviderController {
        @Autowired
        private ProviderService providerService;
    
        @RequestMapping(value = "/service")
        public User test() {
            return providerService.getUser();
        }
    }

    application.properties

    # 应用名称
    spring.application.name=dubbo-demo-provider
    # 应用服务 WEB 访问端口
    server.port=8080

    启动provider 看是否能够调用

     没毛病,接口可以正常访问。接下来 写服务调用者

    定义一个http请求实现类

    package com.example.dubbodemoconsumer;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.util.EntityUtils;
    
    import java.io.IOException;
    
    public class HttpClientTest {
    
        public static String get(String url) {
            CloseableHttpClient client = HttpClientBuilder.create().build();
            HttpGet get = new HttpGet(url);
            try {
                HttpResponse response = client.execute(get);
                String res = EntityUtils.toString(response.getEntity());
                System.out.println(res);
                return res;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    ConsumerService
    package com.example.dubbodemoconsumer;
    
    
    import org.springframework.stereotype.Service;
    
    @Service
    public class ConsumerService {
    
        public String test() {
            String aa = HttpClientTest.get("http://localhost:8080/provider/service");
            return aa;
        }
    }

    controller

    package com.example.dubbodemoconsumer;
    
    import jdk.nashorn.internal.ir.annotations.Reference;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("/consumer")
    public class ConsumerController {
        @Autowired
        private ConsumerService service;
        @RequestMapping("/getName")
        public  String test(){
            return  service.test();
        }
    
    }

    application.properties 修改下端口 

    # 应用名称
    spring.application.name=dubbo-demo-consumer
    server.port=8081

    启动consumer 看是否能够调用

     以上就是一个简单rpc远程调用

    总结 dubbo 就是把复杂的逻辑简单,我们不需要手写这么多的代码。

    只需要加个@service注解,把接口服务注册到服务器上。然后就可以像调用本地方法一样调用其他模块的接口服务

  • 相关阅读:
    依赖单元测试开发
    今天晚上的遭遇
    设计,UML,测试驱动开发
    我是LIGHT的LP,今天由我代笔
    转贴一篇关于BitVector32的Blog
    看牙记
    调整过的书籍目录
    Queue和Stack的学习代码
    BitVector32结构学习
    Visual Studio 2008 在64位操作系统上调试代码的解决方式
  • 原文地址:https://www.cnblogs.com/zjf6666/p/16297743.html
Copyright © 2020-2023  润新知