您的位置:首页 > 编程语言 > Java开发

springboot整合dubbo-start

2017-07-12 14:49 429 查看
1、dubbo分布式框架的由provider,customer和api接口三部分组成;所以标准的做法是创建三个工程分别对应provider,customer,和api;

Api项目

由于api只是定义一些需要实现的功能,所以这一个项目只需要定义一些接口就行,在例子中,我们定义了一个ExampleService;

public interface ExampleService extends Serializable{

public String SayHi(String name);
}

Provider项目

provider项目的功能是实现Api中所定义的各种接口,在github上teaey大神,开源了springboot框架下的dubbo-starter项目,具体地址:
https://github.com/teaey/spring-boot-starter-dubbo,dubbo-starter中引用的dubbo是2.5.4版本的,所以在使用dubbo-starter项目之前,可能需要先将dubbo项目从github上下载过来然后maven编译下,下载地址如下: https://github.com/alibaba/dubbo
编译好之后,会得到dubbo-dubbo-2.5.4-SNAPSHOT的一个jar,添加到本地maven仓库中就行,然后在provider项目中引用dubbo-starter,整个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"> <modelVersion>4.0.0</modelVersion>

<groupId>com.hp</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>dubbo-provider</name>
<description>dubbodemo</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencies>

<dependency>
<groupId>com.hp</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.6.RELEASE</version>
</plugin>
</plugins>
</build>
</project>


然后在application.properties中声明一些配置如下:

spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://172.16.1.55:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.phu.DubboService
spring.dubbo.module.default=false


接着开始实现api中所定义的接口:

@Service(version = "1.0.0")
public class ExampleServiceImpl implements ExampleService{

/**
*
*/
private static final long serialVersionUID = -6591900875272367270L;

@Override
public String SayHi(String name) {
// TODO Auto-generated method stub
return "hi,provider:"+name;
}
}

在这里@Service(version="1.0.0")标签的作用声明服务提供者的版本;

customer项目中,是使用provider项目中实现的接口,其pom的引用跟provider是一样的。

使用provider提供的服务时,加入@Reference(version="1.0.0")标签,正如前面Service标签提供的版本号

@Component
public class SayHiService {

@Reference(version="1.0.0")
ExampleService pSayHiService;

public String sayHi(){
return pSayHiService.SayHi("consumer");
}
}这样就可以引用provider提供的服务了;
PS:因为dubbo项目是注册在zookeeper上的,所以项目启动之前需要先打开zookeeper;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: