本示例基于 dubbo-spring-boot-project 2.7.3 版本,可能会根据新版的发布而过时,阅读时请注意。
关于 dubbo 在 spring-boot 中该如何使用,网上有很多例子,但因为时间跨度太久,很多例子已经过时了,一切还是要以官方的例子为准。
在 github 上搜索 dubbo 和 spring-boot 整合的项目的话,可能会找到下面两个,分别是
- alibaba / dubbo-spring-boot-starter
- apache / dubbo-spring-boot-project
第一个项目,已经归档了(archived),不再更新,所以我们要以第二个项目为准,千万别搞错了。
打开第二个项目的主页,就开始浏览 README 中的 Getting Started 章节。这个章节给我们展示了一个无注册中心(dubbo.registry.address=N/A)的例子。
但是它却跑不起来,消费者启动后无法找到 service provider,报 Not found exported service 的错误。
解决办法如下:
需要在消费者 Reference 服务提供者时,url 里指明 version。其实 version 已经指明了,但不知为何还要在 url 里再次指定。
// @Reference(version = "1.0.0", url = "dubbo://127.0.0.1:12345")
@Reference(version = "1.0.0", url = "dubbo://127.0.0.1:12345?version=1.0.0")
private DemoService demoService;
另外,Getting Started 中的 pom 依赖也比较简略,省略了 spring-boot 原本需要的依赖,您可以参考我这个修复版里 pom 中的依赖。
源码地址:https://github.com/kongxiangxin/dubbo-spring-boot-samples