【Spring Boot】六、整合dubbo(注解的方式)
一.创建项目
1.创建一个空的项目
2.在空的项目中添加两个Spring Boot模块,如下图所示
二.在provider模块中的pom文件中添加依赖
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency> <!--引入zookeeper的客户端工具--> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>
注意,本人的Spring Boot是2.0以上版本的,导入的dubbo依赖是0.2.0。如果版本不对应,可能会启动失败
三.在配置文件中配置dubbo
例如本人的配置如下(provider中的application.properties文件)
dubbo.application.name=provider dubbo.registry.address=zookeeper://192.168.2.130:2181 dubbo.protocol.name=dubbo dubbo.protocol.port=20880 dubbo.scan.basePackages=com.whzc.service.impl
如果是consumer模块,则
dubbo.application.name=consumer dubbo.registry.address=zookeeper://192.168.2.130:2181 dubbo.protocol.name=dubbo dubbo.protocol.port=20880
四.在provider模块中实现发布服务
接口
package com.whzc.service; public interface ArticleProviderService { public String writeArticle(String name); }
实现类(注意注解不要引错了)
package com.whzc.service.impl; import com.alibaba.dubbo.config.annotation.Service; import com.whzc.service.ArticleProviderService; import org.springframework.stereotype.Component; @Service @Component public class ArticleProviderServiceImpl implements ArticleProviderService { @Override public String writeArticle(String name) { return "写了一篇文章"+ name; } }
启动项目,启动成功后如下图所示 (有可能连接时间过长,或zookeeper未开启等各方面原因导致启动失败,可以多尝试几次)
在linux中查看服务,在zookeeper的安装目录中,有一个bin目录,bin目录中有一个zkCli.sh,启动zkCli.sh,
./zkCli.sh
如下图所示
输入
ls /
再输入
ls /dubbo
可以查看已经发布的服务,例如本人的如下所示
附:如果装有dubbo-admin,可以直接在dubbo-admin中查看,例如下图所示(网上直接找dubbo-admin的war包,放到tomcat中即可)
五.在consumer中获取到服务
1.复制provider中的接口到consumer对应的包中(和provider中的接口的包名相同,都是com.whzc.service包中),这里不需要实现类了。
2.创建一个消费者服务,例如(注意Service注解和Reference注解对应的包不要引错了)
package com.whzc.service; import com.alibaba.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; @Service public class ArticleConsumerService { @Reference ArticleProviderService articleProviderService; public void readArticle(){ String str = articleProviderService.writeArticle("文章111"); System.out.println("读了别人"+str); } }
3.在测试类中测试
@Autowired ArticleConsumerService articleConsumerService; @Test public void contextLoads() { articleConsumerService.readArticle(); }
4.发现成功获取到了provider发布的服务,如下图所示
如果直接启动该consumer项目,则可以在dubbo-admin中看到如下图所示