2.7.X的Dubbo,包名不再是com.alibaba,而是org.apache

先看工程目录结构

一个公共api模块,一个SpringBoot项目充当Dubbo服务,一个SpringBoot项目充当服务消费者。

代码

父项目pom

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><modelVersion>4.0.0</modelVersion><groupId>com.demo</groupId><artifactId>dubbo-2.7.3</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>dubbo-api</module><module>dubbo-service</module><module>dubbo-consumer</module></modules><properties><java.version>1.8</java.version><dubbo.version>2.7.3</dubbo.version><!--如果curator版本与zookeeper不对应,会报错:KeeperErrorCode = Unimplemented for /dubbo/com.demo.common.HelloService--><curator.version>2.13.0</curator.version></properties><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>${curator.version}</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>${curator.version}</version></dependency><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies></project>

  

api模块

只是提供了一个公共的服务接口

package com.demo.common;public interface HelloService {String hello();
}

pom

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo-2.7.3</artifactId><groupId>com.demo</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>dubbo-api</artifactId>
</project>

  

Dubbo服务模块

主要提供服务实现

package com.demo.dubboservice.service.impl;import com.demo.common.HelloService;
import org.apache.dubbo.config.annotation.Service;/***  建议由服务提供方设置超时,在 Provider 上尽量多配置 Consumer 端属性*  timeout 方法调用超时*  retries 失败重试次数,缺省是 2 [2]*  loadbalance 负载均衡算法 [3],缺省是随机 random。还可以有轮询 roundrobin、最不活跃优先 [4] leastactive 等*  actives 消费者端,最大并发调用限制,即当 Consumer 对一个服务的并发调用到上限后,新调用会阻塞直到超时*/
@Service(registry = "dubboRegistry", timeout = 3000, version = "1.0", retries = 3, loadbalance = "random", actives = 5)
public class HelloServiceImpl implements HelloService {@Overridepublic String hello() {return "动物园里有大西几! 小凶许! 小脑斧! 梅发怒!";}
}

application.properties

spring.application.name=service-provider
server.port=9999
spring.main.allow-bean-definition-overriding=true# Dubbo Application
# The default value of dubbo.application.name is ${spring.application.name}
# dubbo.application.name=${spring.application.name}# 扫描dubbo服务(@Service.. @Reference..)
dubbo.scan.basePackages=com.demo.dubboservice.service.impl# 通信协议
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880# 注册中心
dubbo.registry.id = dubboRegistry
dubbo.registry.timeout=5000
dubbo.registry.address=zookeeper://127.0.0.1:2181
# Dubbo 支持 zkclient 和 curator 两种 Zookeeper 客户端实现:在2.7.x的版本中已经移除了zkclient的实现,如果要使用zkclient客户端,需要自行拓展
dubbo.registry.client=curator
# 元数据地址
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181

  

pom

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo-2.7.3</artifactId><groupId>com.demo</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>dubbo-service</artifactId><name>dubbo-service</name><description>Demo project for Spring Boot</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.demo</groupId><artifactId>dubbo-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  

服务消费者模块

调用dubbo服务,提供前端接口

package com.demo.dubboconsumer.controller;import com.demo.common.HelloService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Reference(version = "1.0")private HelloService helloService;@RequestMapping("/hello")public String hello(){return helloService.hello();}
}

application.properties

spring.application.name=dubbo-consumer
server.port=9990
spring.main.allow-bean-definition-overriding=true# Dubbo Application
# The default value of dubbo.application.name is ${spring.application.name}
# dubbo.application.name=${spring.application.name}# 扫描dubbo服务(@Service.. @Reference..)
dubbo.scan.basePackages=com.demo.dubboconsumer.controller# 通信协议
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880# 注册中心
dubbo.registry.id=dubboRegistry
dubbo.registry.timeout=5000
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.client=curator
# 元数据地址
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181

  

pom

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo-2.7.3</artifactId><groupId>com.demo</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>dubbo-consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>dubbo-consumer</name><description>Demo project for Spring Boot</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.demo</groupId><artifactId>dubbo-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  

代码搞定,又出了个新问题

为什么呢,因为中央仓库里还没有2.7.3版本的依赖,等有了就不会出现这个问题了(这里就要吐槽一下,Dubbo-SpringBoot-Starter项目与Dubbo项目的版本不同步有点尴尬)

临时解决,去GitHub上下载2.7.3的源码,然后本地install。

解压缩,然后进入根目录,执行 mvn install -Dmaven.test.skip=true

启动

先在本地启动一个3.4.X的zookeeper(去官网下载,然后复制conf里的zoo_sample.cfg,重命名zoo.cfg,即可启动),然后先后启动Dubbo服务以及消费者项目

访问

如果你启动Dubbo管控台(注:最好是最新版),可以看见Dubbo服务

访问 http://localhost:8080/#/

点击查看【详情】,在最后有个元数据】信息,这与前面配置的【元数据地址】是相关联的。

源码地址:https://github.com/Mysakura/dubbo-2.7.3-demo

转载于:https://www.cnblogs.com/LUA123/p/11189634.html

Dubbo2.7.3入门相关推荐

  1. Dubbo2.6.5入门——管控台的安装

    首先去下载管控台:GitHub 然后解压到本地,截止到目前2019-01-18,最新管控台基于Dubbo2.7.0-SNAPSHOT版本,但是2.7.0还没有正式发布,不过影响不大. Dubbo Op ...

  2. Dubbo2.6.5入门——简单的HelloWorld

    建立父工程 打开idea,新建一个空的maven工程,作为整个项目的父工程. <?xml version="1.0" encoding="UTF-8"?& ...

  3. dubbo入门--Hello World

    Dubbo入门--Hello World 转载自:http://blog.csdn.net/hanmov/article/details/66973957?locationNum=2&fps= ...

  4. Dubbo从入门到精通(全)

    目录 前言 1. 分布式系统 1.1 发展演变 1.2 PRC 2. dubbo核心概念 3. dobbo环境搭建 3.1 zookeeper 3.2 监控中心 4. 入门项目 4.1 无dubbo ...

  5. Dubbo和Zookeeper入门到实战,看这篇就够了

    前沿:在当下流行的分布式架构中Dubbo是非常流行rpc框架,借着这几天有空学习学习,并在后面的项目中进行实战,为后面的分布式项目做铺垫. Dubbox简介 Dubbox 是一个分布式rpc框架,是阿 ...

  6. Dubbox简单入门

    dubbox是分布式框架,让我们一起来简单搭建一个小demo Dubbox简介 Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止 ...

  7. Dubbox简介与入门实战

    前言 什么是Dubbox?Dubbox是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo,被国内电商及互联网项目中使用,后期阿里巴巴停止了Dubbo项目的维护(现Dubbo已捐献给Apache基 ...

  8. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  9. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

最新文章

  1. 北京大学北京天然气水合物国际研究中心招聘生信博后
  2. OpenGL着色器基础
  3. python 创建以列表为元素的列表
  4. SQL Server 2008获取一个表的字段,类型,长度,是否主键,是否为空,注释等信息...
  5. linux gcc编译下的文件读写操作
  6. pdf虚拟打印机下载win7_虚拟打印机(smartprinter) v4.2官方版
  7. python axis=1是行吗_Python:axis=0 axis=1的理解
  8. Android UI学习之ListView(使用ArrayAdapter和SimpleAdapter)
  9. C#高级知识点(ABP框架理论学习高级篇)——白金版
  10. 百度网盘也能BT下载ED2K
  11. 《JSP实用教程(第2版)/耿祥义》错误之import属性导入多个包
  12. hybird app框架
  13. JavaScript制作网页动画
  14. PHP连接并使用人大金仓数据库kingbase
  15. 单域安全评估以及加固方案
  16. 控制进度-监控管理过程组
  17. UART 通信 协议 (二)
  18. 微信开发 - 获取用户地理位置定位
  19. miredo - Teredo IPv6 tunneling for Unix
  20. flasgger手写phpwind接口文档

热门文章

  1. python+sklearn训练决策树分类模型(绘制学习曲线和验证曲线)
  2. 《等着我吧,我会回来》 苏·西蒙诺夫
  3. js中如何打印九九乘法表
  4. 反射(Assembly)
  5. Apache Drill Architecture Introduction
  6. raid0 raid1 raid5 三种工作模式的工作原理及特点
  7. 连续系统的时域分析(一)LTI连续系统微分方程解法3——零状态响应的求解方法
  8. 如何添加Android返回键的退出功能
  9. PCLVisualizer
  10. 物联网技术如何改变了我们的生活?