442
技術社區[雲棲]
SpringBoot開發案例之整合Dubbo消費者
有人賣就有人買,顯然是亙古不變的真理,前兩篇講解了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="https://www.springframework.org/schema/beans"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="https://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
https://code.alibabatech.com/schema/dubbo https://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,https://localhost:8081/consumer ,提供者打印我是:張三,頁麵返回執行成功,說明調用成功。
作者: 小柒
出處: https://blog.52itstyle.com
本文版權歸作者和雲棲社區所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出, 如有問題, 可郵件(345849402@qq.com)谘詢。
最後更新:2017-07-19 10:32:49