消费者模式
我用的SpringBoot版本是1.5.7,有点老,公司项目涉及太多,如果换版本依赖关系太难排查了
公共配置-Pom.xml
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.2</version>
</dependency>
<!--接口依赖-->
<dependency>
<groupId>com.synway.#######</groupId>
<artifactId>######Service</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/#####Service-1.0.0.jar</systemPath>
</dependency>
一、XML配置方式
- 添加xml配置-comsumer.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用服务,用于计算依赖关系,不是匹配条件,不要与提供方名称一样 --> <dubbo:application name="AssetManage"/> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://10.1.9.161:2181"/> <!-- 生成远程服务代理,可以与本读bean一样使用 check属性,启动时是否检查,一般设置false 启动时候不检查 group属性,如果有分组必须指定或者以*代替,否则无法调用接口 --> <dubbo:reference id="organUserService" check="false" interface="com.synway.portalinterface.dubbo.organuser.OrganUserService" group = "PortalInterfaceService" timeout="3000"/> </beans>
- 接口使用
@RestController public class UserController { @GetMapping("/users") public ResultBean getAllUsers() { ClassPathXmlAplicationContext context=new ClassPathXmlAplicationContext(new String[]{"comsumer.xml"}); context.start(); UserService userService=context.getBean(UserService.class); return ResultBean.success(userService.getAllUsers); } }
二、注解配置方式-推荐
- application.properties配置
#消费方应用服务,用于计算依赖关系,不是匹配条件,不要与提供方名称一样 spring.dubbo.application.name=AssetmManage #使用zookeeper注册中心暴露服务地址 spring.dubbo.registry.address=zookeeper://10.1.9.161:2181
- Reference
//Spring注解 @Service public class UserServiceImpl implement UserService { //dubbo注解 //如果支持方有分组消费者调用必须指定分组,也可用*代替 @Refrenece(check=false,timeout=3000,group="PortalInterfaceService") prvite OrganService organService; @Override public String getDepts() { return organService.getDepts(); } }
- Springboot启动设置
@SpringBootApplication @EnableScheduling @EnableDubboConfiguration public class demoComsumer extends SpringBootServletInitializer { public static void main(String[] args) { SptingBootApplication.run(demoComsumer.class,args); } }