美文网首页
从零创建一个DubboRPC框架

从零创建一个DubboRPC框架

作者: ACtong | 来源:发表于2020-04-19 18:06 被阅读0次

准备一个消费者和一个提供者两个项目

一、在消费者项目上的Dubbo配置

1、在调用者(消费者consumer)的模块上写一个接口

public interface OrderService {
    void placeOrder(int goodsId, int number);
}

2、在controller中注入服务接口

@Reference(version = "${wxshop.orderservice.version}")
private OrderService orderService;
  • wxshop.orderservice.version写在yml文件中,version写1.0.0即可
  • Reference引入的包为:import org.apache.dubbo.config.annotation.Reference;
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.6</version>
</dependency>

3、yml配置zookeeper地址

spring:
  application:
    name: wxshop
wxshop:
  orderservice:
    version: 1.0.0
dubbo:
  registry:
    address: zookeeper://127.0.0.1:2181

二、在提供者项目上的部署Dubbo

1、在新的服务中如何调用的到接口呢
  • 1、发布到中央仓库中,使用maven的方式直接引用(最推荐)
  • 2、在另一个项目中创建一个同名的api(为了简单,这里就这样演示)
2、在提供者项目做一下配置

1、写一个同名的api的interface

public interface OrderService {
    void placeOrder(int goodsId, int number);
}

2、用一个方法去实现接口

import org.apache.dubbo.config.annotation.Service;

@Service(version="${wxshop.orderservice.version}")
public class OrderServiceImpl implements OrderService {
    @Override
    public void placeOrder(int goodsId, int number) {
        System.out.println("id" + goodsId + ", number" + number);
    }
}

3、在yml文件中配置参数

spring:
  application:
    name: orderservice
wxshop:
  orderservice:
    version: 1.0.0
dubbo:
  scan:
    base-packages: com.tk..wxshop.orderservice(配置为自己的包路径)
  protocol:
    name: dubbo
    port: -1
  registry:
    address: zookeeper://127.0.0.1:2181

三、启动项目

1、用docker方式连接zookeeper,即可启动成功了

docker run -d -p 2181:2181 zookeeper

2、若是出现一些包冲突的问题,需要在pom中引入一些文件

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-dependencies-zookeeper</artifactId>
    <version>2.7.6</version>
    <type>pom</type>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3、若出现Invalid name="org.apache.dubbo.config.ApplicationConfig#0" contains illegal character类是问题,需要在yml文件中覆盖一个名字(前面已配置)

四、测试项目

1、在消费者中写入一个请求接口,调用接口即可

@RequestMapping("/testRpc")
    public String testRpc() {
        orderService.placeOrder(1, 2);
        return "";
    }

2、也可以部署多份服务提供者,它会自动调用负载均衡

  • 使用终端命令,可以启动多个spring boot项目:mvn spring-boot:run
参考文档:
  • 1、dubbo-spring-boot-samples的zookeeper的代码

相关文章

  • 从零创建一个DubboRPC框架

    准备一个消费者和一个提供者两个项目 一、在消费者项目上的Dubbo配置 1、在调用者(消费者consumer)的模...

  • iOS 框架的创建

    iOS框架的创建(一) —— 一个详细的框架创建流程(一)iOS框架的创建(二) —— 一个详细的框架创建流程(二)

  • Netty实战篇-手写DubboRpc框架

    1. RPC 基本介绍 rpc是远程调用的一种行为,在数据传输过程中涉及到传输协议,http就是一种传输协议。 R...

  • 从零搭建项目开发框架-03创建Maven工程

    maven在现在的java软件开发中用的非常非常多,主要目的两个,一个是管理jar包及工程模块依赖,另一个是方便打...

  • 从零创建一个Git项目

    从零创建一个Git项目 从命令行创建一个仓库 从命令行推送已经创建的仓库

  • React全家桶框架教程笔记(一)

    从零搭建React全家桶框架教程笔记(一) 传送门:从零搭建React全家桶框架教程 目录 写在前面 | 说明...

  • 从零创建一个React项目

    要去https://nodejs.org/zh-cn/安装node.js(工程化项目创建项目和启动项目依赖于nod...

  • 从零设计一个mvc框架

    作为一个JavaWeb开发人员,没有经过EJB时代,但是使用过SSH和SSM这些优秀的框架,框架减轻了开发者的开发...

  • Flask框架——第一个Flask程序

    本系列文章的目的是让零基础的小伙伴从零开始一步一步学习Flask框架,从零入门到能够独立完成一个基于Flask框架...

  • 从零创建项目实践

    背景 大帅MarkZhai的从零系列火遍大江南北,奈何大帅最近要做爸爸了,忙得没有时间出demo,文章中一些细节部...

网友评论

      本文标题:从零创建一个DubboRPC框架

      本文链接:https://www.haomeiwen.com/subject/gqembhtx.html