前言
由于阿里dubbo团队的解散,已经很久没有更新,介于没有支持Rest服务等新特性。所以把目光投向了dubbox,dubbox是当当网基于dubbo二次开发的一个项目,集成SpringBoot需要新版本的dubox并没有提交maven仓库,接下来需要自己制作maven依赖。
制作maven依赖
1、 下载dubbox工程
使用git克隆工程,关于git的安装及使用在这里就不说了。
- git clone -b dubbox-2.8.4 --depth 1 https://github.com/dangdangdotcom/dubbox
或者去GitHub上下载
注意:一定要选择分支dubbox-2.8.4,这里是我说的巨坑。
2、cmd使用maven命令编译,需要配置maven环境变量。
cd dubbox
mvn clean install -Dmaven.test.skip=true
3、到这步制作maven依赖就完成了,到本地仓库里查看。
4、项目里引入依赖
com.alibaba
dubbo
2.8.4
安装zookeeper
1、zookeeper简介
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户
而dubbo就是依赖zookeeper的一个分布式框架,当然二次开发的dubbox肯定也会依赖于zookeeper,所以我们需要先安装zookeeper
2、下载zookeeper
zookeeper官网地址http://zookeeper.apache.org/
下载地址http://apache.fayea.com/zookeeper/
3、安装zookeeper
因为我是在Windows环境配置的,所以就简单说一下windows下面的配置吧,首先解压压缩包,然后进入conf文件夹,复制一下zoo_sample.cfg创建副本,然后重命名为zoo.cfg,因为zookeeper只识别zoo.cfg,而默认是没有这个文件的,zoo_sample.cfg是默认的配置文件,但是因为文件名的原因,所以zookeeper无法识别,当然直接重命名zoo_sample.cfg也是可以的,只是看自己喜欢咯
4、启动zookeeper
Windows环境下直接运行bin目录下的zkServer.cmd就可以,如果是Linux环境,则在bin目录下运行
./zkServer.sh start
命令,就可以启动zookeeper
创建工程
1、创建如下图目录结构的工程
2、修改pom.xml
- boot-dubbo pom.xml
4.0.0
com.boot
boot-dubbo
1.0-SNAPSHOT
boot-dubbo-api
boot-dubbo-provider
boot-dubbo-consumer
pom
org.springframework.boot
spring-boot-starter-parent
1.5.2.RELEASE
UTF-8
1.5.2.RELEASE
1.8
1.16.18
2.8.4
0.6
org.springframework.boot
spring-boot-starter
${spring-boot.version}
org.springframework.boot
spring-boot-starter-web
${spring-boot.version}
org.projectlombok
lombok
${lombok.version}
provided
com.alibaba
dubbo
${dubbo.version}
com.101tec
zkclient
${zkclient.version}
- boot-dubbo-api pom.xml
boot-dubbo
com.boot
1.0-SNAPSHOT
4.0.0
boot-dubbo-api
org.projectlombok
lombok
provided
- boot-dubbo-provider pom.xml
boot-dubbo
com.boot
1.0-SNAPSHOT
4.0.0
boot-dubbo-provider
com.boot
boot-dubbo-api
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-web
com.alibaba
dubbo
com.101tec
zkclient
org.springframework.boot
spring-boot-maven-plugin
- boot-dubbo-consumer pom.xml
boot-dubbo
com.boot
1.0-SNAPSHOT
4.0.0
boot-dubbo-consumer
com.boot
boot-dubbo-api
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-web
com.alibaba
dubbo
com.101tec
zkclient
org.springframework.boot
spring-boot-maven-plugin
3、boot-dubbo-api添加服务提供者的接口
package com.boot.service;
public interface TestService {
String sayHello(String str);
}
4、boot-dubbo-provider服务提供者
package com.boot.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.boot.service.TestService;
import java.text.SimpleDateFormat;
import java.util.Date;
//这里Service是dubbo的注解,需要设置版本,不设置行不行请自测
@Service(version = "1.0.0")
public class TestServiceImpl implements TestService {
@Override
public String sayHello(String str) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return dateFormat.format(new Date()) + ": " + str;
}
}
- dubbox.xml
- application.yml
server:
port: 8081
context-path: /
5、boot-dubbo-consumer服务消费者
package com.boot.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.boot.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/")
public class TestController {
@Reference(version = "1.0.0")
private TestService testService;
@GetMapping("hello")
public String hello() {
return testService.sayHello("Hello springboot and dubbo!");
}
}
- dubbox.xml
- application.yml
server:
port: 8082
context-path: /
6、引用dubbo配置xml
在Spring boot的Application类添加注解
@ImportResource({"classpath:dubbo.xml"})
xml名字可以自定义,消费者和服务提供者Application类都需要配置此注解。
结尾
至此,spring boot集成duubox就结束了。感谢有坑,有坑才有成长。
GitHub项目地址