有人卖就有人买,显然是亘古不变的真理,前两篇讲解了SpringBoot+Dubbo的提供者的几种暴露方式,这篇跟大家分享一下消费者如何去订阅属于自己的服务。
相信,下图大家一定不陌生吧:注册中心,消费者,容器(提供者),监控中心。线框图也是画的如此清晰,这里就不跟大家详细的概述了。
开发环境
JDK1.7、Maven、Eclipse、SpringBoot1.5.1、Dubbo2.8.4
项目结构
实体类和业务接口,这里就不展示了,与提供者代码同步即可(自行打包引入或者复制)。
application.properties,也没什么好说的,修改一下server.context-path和server.port即可。
# 项目contextPath,一般在正式发布版本中,我们不配置
server.context-path=/consumer
# 错误页,指定发生错误时,跳转的URL。请查看BasicErrorController源码便知
server.error.path=/error
# 服务端口
server.port=8081
# session最大超时时间(分钟),默认为30
server.session-timeout=60
# 该服务绑定IP地址,启动服务器时如本机不是该IP地址则抛出异常启动失败,只有特殊需求的情况下才配置
# server.address=192.168.16.11
# tomcat最大线程数,默认为200
server.tomcat.max-threads=300
# tomcat的URI编码
server.tomcat.uri-encoding=UTF-8
#ZooKeeper
dubbo.registry.address=192.168.1.180:2181
logging.level.root=ERROR
dubbo.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
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="springBoot_dubbo_consumer"/>
<!-- 注册中心服务地址 -->
<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" />
<!-- 消费者配置 -->
<dubbo:consumer check="false"/>
<!-- 使用注解方式-->
<dubbo:annotation package="com.itstyle.dubbo"/>
</beans>
测试类一SpringbootDubboApplication.java:
@ImportResource({"classpath:dubbo.xml"})
@SpringBootApplication
//此处 userService 报空指针 如果是注解方式
public class SpringbootDubboApplication implements CommandLineRunner {
@Reference
private IUserService userService;
public static void main(String[] args) {
SpringApplication.run(SpringbootDubboApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("开启");
User user = new User("张三", 19);
userService.saveUser(user);
}
}
测试类二DubboTest.java:
@Component
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:dubbo.xml" })
//可以运行 自行修改 dubbo.xml中address
public class DubboTest {
@Reference
private IUserService userService;
@Test
public void pors() {
System.out.println("开启");
User user = new User("张三", 19);
userService.saveUser(user);
}
}
启动类Application.java:
/**
* @author 科帮网 小柒
*/
@EnableAutoConfiguration
@ImportResource({"classpath:dubbo.xml"})
@Controller
public class Application {
private static final Logger logger = Logger.getLogger(Application.class);
@Reference
private IUserService userService;
@RequestMapping("/")
@ResponseBody
public String greeting() {
User user = new User("张三", 19);
userService.saveUser(user);
return "执行成功";
}
public static void main(String[] args) throws InterruptedException {
SpringApplication.run(Application.class, args);
logger.info("项目启动 ");
}
}
首先运行提供方项目,然后执行消费者启动类,最后我们访问以下URL,http://localhost:8081/consumer ,提供者打印我是:张三,页面返回执行成功,说明调用成功。
代码:https://git.oschina.net/52itstyle/springboot_dubbo_consumer