spring-dubbo-config.xml
<dubbo:application name="ssm-service" owner="crossoverJie" organization="ssm-crossoverJie" logger="slf4j"/> <dubbo:registry id="dubbo-registry" address="zookeeper://192.168.0.188:2181" file="/tmp/dubbo.cachr" /> <dubbo:monitor protocol="registry" /> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:provider timeout="15000" retries="0" delay="-1" /> <dubbo:consumer check="false" timeout="15000" />
其实就是配置我们服务注册的zk地址,以及服务名称、超时时间等配置。
spring-dubbo-provider.xml
<dubbo:annotation package="com.crossoverJie.api.impl" />
这个配置扫描注解包的位置,一般配置到接口实现包即可。
spring-dubbo-consumer.xml
这个是消费者配置项,表明我们需要依赖的其他应用。
这里我们在SSM-BOOT
项目中进行配置:
<dubbo:reference id="userInfoApi" interface="com.crossoverJie.api.UserInfoApi" />
直接就是配置的刚才我们提供的那个用户查询的接口,这样当我们自己的内部项目需要使用到这个服务只需要依赖SSM-BOOT
即可,不需要单独的再去配置consumer
。这个我有在上一篇SSM(十) 项目重构-互联网项目的Maven结构中也有提到。
安装管理控制台
还有一个需要做的就是安装管理控制台,这里可以看到我们有多少服务、调用情况是怎么样等作用。
这里我们可以将dubbo的官方源码下载下来,对其中的dubbo-admin
模块进行打包,将生成的WAR包
放到Tomcat
中运行起来即可。
但是需要注意一点的是:
需要将其中的dubbo.properties
的zk地址修改为自己的即可。
dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest
到时候登陆的话使用root,密码也是root。
使用guest,密码也是guest。
登陆界面如下图:
QQ20170407-001924@2x.jpg
其中我们可以看到有两个服务以及注册上去了,但是没有消费者。
消费服务
为了能够更直观的体验到消费服务,我新建了一个项目:
其中在SSM-CONSUMER-API
中我也定义了一个接口:
/** * Function:薪资API * @author chenjiec * Date: 2017/4/4 下午9:46 * @since JDK 1.7 */ public interface SalaryInfoApi { /** * 获取薪资 * @param userId * @return * @throws Exception */ public SalaryInfoRsp getSalaryInfo(int userId) throws Exception; }
因为作为消费者的同时我们也对外提供了一个获取薪资的一个服务。
在SSM-CONSUMER-SERVICE
模块中进行了实现:
/** * Function: * @author chenjiec * Date: 2017/4/4 下午9:51 * @since JDK 1.7 */ @Service public class SalaryInfoApiImpl implements SalaryInfoApi { private static Logger logger = LoggerFactory.getLogger(SalaryInfoApiImpl.class); @Autowired UserInfoApi userInfoApi ; /** * 获取用户信息 * * @param userId * @return * @throws Exception */ @Override public SalaryInfoRsp getSalaryInfo(int userId) throws Exception { logger.info("薪资查询Id="+userId); //返回对象 SalaryInfoRsp salaryInfoRsp = new SalaryInfoRsp() ; //调用远程服务 UserInfoRsp userInfo = userInfoApi.getUserInfo(userId); salaryInfoRsp.setUsername(userInfo.getUserName()); return salaryInfoRsp; } }
其中就可以直接使用userInfoApi
调用之前的个人信息服务。
再调用之前需要注意的有点是,我们只需要依赖SSM-BOOT
这个模块即可进行调用,因为SSM-BOOT
模块已经为我们配置了消费者之类的操作了:
<dependency> <groupId>com.crossoverJie</groupId> <artifactId>SSM-BOOT</artifactId> </dependency>