看了很多博客总算自己完成了,总结如下:
1.在linux上安装zookeeper和dubbo(非集群)
- 下载zookeeper-3.4.6.tar.gz并解压缩到/usr/local路径下
- 进入到/usr/local/zookeeper-3.4.6/bin目录下,通过./zkServer.sh启动zookeeper
- 下载dubbo-admin-2.5.4.SNAPSHOT.war 到linux上,通过
cp dubbo-admin-2.5.4.SNAPSHOT.war /usr/local/tomcats/tomcat-8080/webapps
命令将该war包放到一个tomcat的webapps目录下,进入tomcat的bin目录启动tomcat
此时,dubbo-admin-2.5.4.SNAPSHOT.war会自动解压缩成为dubbo-admin-2.5.4.SNAPSHOT文件夹,为了便于访问,我们通过
mv dubbo-admin-2.5.4.SNAPSHOT dubbo
命令把该文件夹名称修改为dubbo;之后便可以通过 http://主机IP地址:8080/dubbo访问到dubbo的控制页面。
访问时需要输入用户名和密码,默认是-root -root
现在就可以通过这个界面查看dubbo的相关信息,包括注册的服务等。
2.SpringBoot整合Dubbo
- 创建两个Spring Boot工程,添加web依赖,一个作为服务提供者,一个作为服务消费者;
- 添加dubbo依赖:在两个工程的pom文件中添加如下依赖:两个工程一样,三个依赖都不能少
<!-- dubbo依赖 -->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.7</version>
</dependency>
这里,dubbo的依赖有两种,如下:
有的博客中选的是io.dubbo.springboot这个dubbo依赖,但是这个依赖中并没有dubbo注解开发需要的包,所以我选择的是com.alibaba.spring.boot 。至于com.alibaba这个依赖,已经在com.alibaba.spring.boot这个起始依赖里包含了。
- 在yml文件中配置dubbo(也许alt+/不能提示出dubbo的配置属性,但是没有关系),除了端口,其他的配置都一样
我的服务所在的包是com.ehr.humanfiles.service,所以在配置文件中scan的值就是这个。
- 编写代码:
- 服务发布者是ehr-humanfiles工程,发布服务的类是HumanfilesServiceImpl类,实现的是HumanfilesService接口
注意,在该工程的启动类上要添加@EnableDubbo标签,否则会无法注册服务
另:代码中的@Service是dubbo.config包下的,不是springframework包下的!!!不要导错了
- 此时启动该项目,控制台如下:
可以看到,控制台一些关于zookeeper的日志信息,同时dubbo控制台多了刚才注册的服务。项目搭建成功
- 服务调用工程
- 还是要在启动类上添加@EnableDubbo注解
- 在服务调用工程ehr-portal的一个Controller中测试
humanfilesService.human()返回的是"dubboService",视图解析器将进行解析,为我们跳转到dubboService.html页面:
至此,SpringBoot整合Dubbo完成!dubbo控制台也出现了服务消费者。