閱讀442 返回首頁    go 技術社區[雲棲]


SpringBoot開發案例之整合Dubbo消費者

有人賣就有人買,顯然是亙古不變的真理,前兩篇講解了SpringBoot+Dubbo的提供者的幾種暴露方式,這篇跟大家分享一下消費者如何去訂閱屬於自己的服務。

相信,下圖大家一定不陌生吧:注冊中心,消費者,容器(提供者),監控中心。線框圖也是畫的如此清晰,這裏就不跟大家詳細的概述了。

000

開發環境

JDK1.7、Maven、Eclipse、SpringBoot1.5.1、Dubbo2.8.4

項目結構

21

實體類和業務接口,這裏就不展示了,與提供者代碼同步即可(自行打包引入或者複製)。

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

  上一篇:go  使用MaxCompute快速實現企業數據化運營
  下一篇:go  雲架構師前(錢)景這麼好,我們該如何轉型?這有兩位阿裏雲雲架構總監多年心得