乾貨:RocketMQ集成Spring Cloud Config配置中心

之前簡單的介紹了下 ,現在就寫一篇RocketMQ與SpringBoot、Spring Cloud 集成的簡單例子來結合一下,更好地去了解如何在實際開發中優雅的配置RocketMQ。該項目地址為https://gitee.com/Wilson-He/spring-boot-series,由於代碼顯示不友善,所以以圖片為主,不便之處,敬請見諒[doge]。

模塊功能簡介

  • 註冊中心(spring-cloud-eureka)使用Eureka,為服務間的調用提供路由
  • 配置中心(spring-cloud-config-server)為了簡便使用Spring Cloud Config註冊到Eureka為Eureka上其它應用提供配置服務(實際中一般都會使用apollo,對比spring cloud config功能更強大)
  • 生產者模塊(spring-cloud-producer)通過配置中心獲取各Topic配置進行消息發送
  • 消費者模塊(spring-cloud-consumer)通過配置中心獲取Consumer配置進行消息消費

rocketmq的相關依賴放在spring-rocketmq中pom.xml統一配置

乾貨:RocketMQ集成Spring Cloud Config配置中心

註冊中心(eureka)模塊

  • 依賴配置
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • application.yml
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • 主程序EurekaApplication
乾貨:RocketMQ集成Spring Cloud Config配置中心

配置中心模塊

  • 配置文件rocketmq-test.properties

由於git的倉庫不穩定,所以將配置文件同步到gitee,連接gitee上的配置文件

乾貨:RocketMQ集成Spring Cloud Config配置中心

  • 依賴配置
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • application.yml
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • bootstrap.yml
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • ConfigServerApplication
乾貨:RocketMQ集成Spring Cloud Config配置中心

生產者模塊

  • 依賴配置(配置中心的依賴為starter-config,以前因依賴太相似踩過搞錯的坑)
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • application.yml
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • bootstrap.yml
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • CloudProducerApplication
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • MessageSenderController
乾貨:RocketMQ集成Spring Cloud Config配置中心

RocketMQTemplate:SpringBoot對RocketMQ生產者(DefaultMQProducer類)在的集成類,其方法(如異步消息發送mqTemplate.asyncSend()、同步消息send()、事務消息的發送sendMessageInTransaction()等)都可在DefaultMQProducer中找到匹配的方法。

消費者模塊

  • application.yml
乾貨:RocketMQ集成Spring Cloud Config配置中心

由於配置了註冊中心,@RocketMQMessageListener註解的name-server默認配置值為${rocketmq.name-server:},所以只要配置中心含rocketmq.name-server的配置即可省略consumer的name-server配置,前文的rocketmq-test.properties已配置了該屬性。

  • bootstrap.yml文件配置同Producer
  • 消息監聽器

SpringBoot中RocketMQ消費消息只需實現RocketMQListener接口進行業務消息處理邏輯即可。

    • OrderRocketMQListener(只消費${rocketmq.topic.order}的消息)
乾貨:RocketMQ集成Spring Cloud Config配置中心

    • UserRocketMQListener(只消費${rocketmq.topic.user}的消息)
乾貨:RocketMQ集成Spring Cloud Config配置中心

  • CloudConsumerApplication
乾貨:RocketMQ集成Spring Cloud Config配置中心

運行測試

  1. 運行NameServer:mqnamesrv
  2. 運行Broker:mqbroker -n 127.0.0.1:9876
  3. 運行EurekaApplication
  4. 運行ConfigServerApplication
  5. 運行CloudConsumerApplication
  6. 運行CloudProducerApplication
  7. 打開http://localhost:8000查看應用服務是否已成功註冊到註冊中心
乾貨:RocketMQ集成Spring Cloud Config配置中心

8.調用CloudProducerApplication信息發送接口進行測試

http://localhost:9990/send/user?msg=user msg
http://localhost:9990/send/order?msg=order msg

可以看到CloudConsumerApplication控制檯打印出Listener接收到的消息:

乾貨:RocketMQ集成Spring Cloud Config配置中心

結語

沒什麼好結的,能肝完這些圖的都是大佬,更好的觀感體驗可以到https://blog.csdn.net/z28126308根據專欄查閱文章

乾貨:RocketMQ集成Spring Cloud Config配置中心


分享到:


相關文章: