工作中用springboot搭建项目,用dubbo做远程调用。springboot提倡注解配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例。
本文假定你已经有springboot和dubbo的使用经验。
dubbo简介
dubbo是阿里巴巴开源的分布式服务框架,一般使用dubbo的rpc调用。但2016年停止维护,现在使用的2.8.4版本其实是当当维护的dubbox。2017年8月阿里又重启维护dubbo,并从2.5.7版本开始支持注解配置。
准备
此示例使用gradle构建,关于gradle的安装配置,请参考官方文档。
zookeeper作为dubbo服务发现的基础组件,关于zookeeper的安装启动,请参考官方文档。
项目结构如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
springboot-dubbo
├─settings.gradle
├─build.gradle
├─springboot-dubbo-api
│ │─build.gradle
│ └─src
│ └─main
│ └─java
│ └─org
│ └─aaron
│ └─springboot
│ └─dubbo
│ └─api
│ demoservice.java
├─springboot-dubbo-consumer
│ │─build.gradle
│ └─src
│ └─main
│ ├─java
│ │ └─org
│ │ └─aaron
│ │ └─springboot
│ │ └─dubbo
│ │ └─consumer
│ │ democontroller.java
│ │ dubboconfiguration.java
│ │ dubboconsumerapplication.java
│ │
│ └─resources
│ application.yml
└─springboot-dubbo-provider
│─build.gradle
└─src
└─main
├─java
│ └─org
│ └─aaron
│ └─springboot
│ └─dubbo
│ └─provider
│ demoserviceimpl.java
│ dubboconfiguration.java
│ dubboproviderapplication.java
│
└─resources
application.yml
|
引入外部依赖
1
2
3
4
|
compile( 'com.alibaba:dubbo:2.6.3' )
compile( 'org.apache.zookeeper:zookeeper:3.4.9' )
compile( 'org.apache.curator:curator-framework:4.0.0' )
compile( 'org.springframework.boot:spring-boot-starter-web' )
|
配置
1.生产者dubbo配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
@configuration
public class dubboconfiguration {
@bean
public registryconfig registryconfig() {
registryconfig registryconfig = new registryconfig();
registryconfig.setaddress( "zookeeper://127.0.0.1:2181" );
registryconfig.setclient( "curator" );
return registryconfig;
}
@bean
public applicationconfig applicationconfig() {
applicationconfig applicationconfig = new applicationconfig();
applicationconfig.setname( "sprintboot-dubbo-provider" );
return applicationconfig;
}
@bean
public protocolconfig protocolconfig() {
protocolconfig protocolconfig = new protocolconfig();
protocolconfig.setport( 12021 );
protocolconfig.setname( "dubbo" );
return protocolconfig;
}
}
|
2.消费者dubbo配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
@configuration
public class dubboconfiguration {
@bean
public registryconfig registryconfig() {
registryconfig registryconfig = new registryconfig();
registryconfig.setaddress( "zookeeper://127.0.0.1:2181" );
registryconfig.setclient( "curator" );
return registryconfig;
}
@bean
public applicationconfig applicationconfig() {
applicationconfig applicationconfig = new applicationconfig();
applicationconfig.setname( "sprintboot-dubbo-consumber" );
return applicationconfig;
}
@bean
public consumerconfig consumerconfig() {
consumerconfig consumerconfig = new consumerconfig();
consumerconfig.settimeout( 3000 );
return consumerconfig;
}
}
|
3.定义接口
1
2
3
|
public interface demoservice {
string sayhello();
}
|
4.生产者实现接口
1
2
3
4
5
6
7
8
9
10
11
|
import com.alibaba.dubbo.config.annotation.service;
@component
@service (interfaceclass = demoservice. class , version = "1.0" )
public class demoserviceimpl implements demoservice {
@override
public string sayhello() {
return "hello springboot dubbo" ;
}
}
|
5.消费者调用接口
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import com.alibaba.dubbo.config.annotation.reference;
@restcontroller
public class democontroller {
@reference (interfaceclass = demoservice. class , version = "1.0" )
private demoservice demoservice;
@requestmapping ( "/hello" )
public string sayhello() {
return demoservice.sayhello();
}
}
|
启动
- 本地启动zookeeper
- 依次启动springboot-dubbo-provider,springboot-dubbo-consumer
- 浏览器访问 localhost:8080/hello
- 看到返回'hello springboot dubbo' 即表示调用成功
其他
示例源码(github)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.spring4all.com/article/1587