springboot集成dubbo注解版的示例代码
工作中用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的安装启动,请参考官方文档。
项目结构如下
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
引入外部依赖
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配置
@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配置
@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.定义接口
public interface DemoService {
String sayHello();
}
4.生产者实现接口
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.消费者调用接口
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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
springboot2.0如何通过fastdfs实现文件分布式上传
这篇文章主要介绍了springboot2.0如何通过fastdfs实现文件分布式上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-12-12
SpringBoot对Druid配置SQL监控功能失效问题及解决方法
这篇文章主要介绍了SpringBoot对Druid配置SQL监控功能失效问题的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-05-05
Java异常处理运行时异常(RuntimeException)详解及实例
这篇文章主要介绍了 Java异常处理运行时异常(RuntimeException)详解及实例的相关资料,需要的朋友可以参考下http://time.qq.com/?pgv_ref=aiotime2017-05-05


最新评论