dubbo-spring-boot-starter的maven项目托管在;同时也可以在上了解它的简单介绍。
dubbo-spring-boot-starter是dubbo的spring boot starter,它可以无缝地对接spring boot和dubbo,方便大家使用dubbo组件。
需要注意的是dubbo-spring-boot-starter支持的jdk版本为1.6或者1.6+。
如何发布dubbo服务
- 添加spring-boot-starter-dubbo依赖:
-
com.alibaba.spring.boot dubbo-spring-boot-starter 1.0.0 在application.properties内添加dubbo的相关配置信息,demo配置如下:
-
# dubbo配置spring.dubbo.appname=provider-testspring.dubbo.protocol=dubbo# 此处也可使用其它协议,比如zookeeper://xxxx:xxspring.dubbo.registry=multicast://224.0.0.0:1111spring.dubbo.port=20800spring.dubbo.group=testspring.dubbo.version=1.0.0
接下来在Spring Boot Application上添加@EnableDubboConfiguration,表示要开启dubbo功能。
-
/** * Provider启动类 * * 如果没有web容器,需要hold住服务,否则进程会退出,参考以下代码: * *
* synchronized (DubboProviderLauncher.class) { * while (true) { * try { * DubboProviderLauncher.class.wait(); * } catch (InterruptedException e) { * // swallow it * } * } * } *
* * @author xionghui * @since 1.0.0 */@SpringBootApplication@EnableDubboConfigurationpublic class DubboProviderLauncher { public static void main(String[] args) { SpringApplication.run(DubboProviderLauncher.class, args); }}编写hello服务,只需要在发布的服务实现上添加注解 ,其中interfaceClass是要发布服务的接口。
-
import com.alibaba.dubbo.config.annotation.Service;@Component@Service(interfaceClass = IHelloService.class)public class HelloServiceImpl implements IHelloService { @Override public String hello() { return "hi, you!"; }}
启动Spring Boot应用。
如何消费Dubbo服务
- 添加依赖
-
com.alibaba.spring.boot dubbo-spring-boot-starter 1.0.0 在application.properties添加dubbo的相关配置信息,demo配置如下:
-
# dubbo配置spring.dubbo.appname=consumer-testspring.dubbo.protocol=dubbo# 此处也可使用其它协议,比如zookeeper://xxxx:xxspring.dubbo.registry=multicast://224.0.0.0:1111spring.dubbo.port=20801spring.dubbo.group=testspring.dubbo.version=1.0.0
接下来在Spring Boot Application上添加@EnableDubboConfiguration,表示要开启dubbo功能。
-
/** * Consumer启动类 * * @author xionghui * @since 1.0.0 */@SpringBootApplication@EnableDubboConfigurationpublic class DubboConsumerLauncher { public static void main(String[] args) { SpringApplication.run(DubboConsumerLauncher.class, args); }}
通过注入需要使用的interface:
-
/** * Consumer Controller * * @author xionghui * @since 1.0.0 */@RestController@RequestMapping("/")public class ConsumerController { // timeout表示dubbo超时时间,单位为ms @Reference(timeout = 1000) private IHelloService iHelloService; @RequestMapping(value = "hello", method = RequestMethod.GET) @ResponseBody public String hello() { return this.iHelloService.hello(); }}
启动Spring Boot应用。
- 可以通过http://localhost:port/health监控服务信息:
-
{ status: "UP", dubbo: { status: "UP", ClassIdBean [clazz=interface org.test.IHelloService, group=test, version=1.0.0]: true }, diskSpace: { status: "UP", total: 487955914752, free: 455584600064, threshold: 10485760 }}
最后通过http://localhost:port/hello调用RPC服务,返回结果:
-
hi, you!
参考文档
- dubbo:
- spring-boot:
- dubbo-spring-boot-starter: