使用SpringCloud實現Java分散式開發【part-7】:Spring Cloud Bus訊息匯流排的介紹及使用
SpringCloud簡介
Spring Cloud是Spring旗下的專案之一
Spring Cloud並不是一個元件 而是許多元件的集合
其將當下非常流行的一些技術整合到了一起 實現了多個分散式開發中的重要功能
協調了分散式環境中各個系統 並且為各類服務提供模板性的配置
其主要涉及的元件包括:
- Eureka:註冊中心
- Zuul或Spring Cloud Gateway:服務閘道器
- Ribbon:負載均衡
- Feign:服務呼叫
- Hystrix或Resilience4j:熔斷器
除此之外 還有一些很有用的元件 比如Spring Cloud Config和Spring Cloud Bus
【在本篇中 將介紹Spring Cloud Bus訊息匯流排】
Spring Cloud Bus訊息匯流排
若修改Spring Cloud Config的配置 不重啟服務的話 則無法讀取到最新修改後的配置項
Spring Cloud Bus可以在不重啟系統的情況下實現及時同步更新配置項
Spring Cloud Bus是用輕量的訊息代理將分散式的節點連線起來 可以用於廣播配置檔案的更改或者服務的監控管理
也就是訊息匯流排可以為微服務做監控 也可以實現應用程式之間的相互通訊
Spring Cloud Bus可選的訊息代理有RabbitMQ和Kafka
使用步驟
Spring Cloud Bus底層是基於RabbitMQ實現的 預設使用本地的訊息佇列服務 因此需要提前安裝RabbitMQ 然後啟動本地的RabbitMQ服務
安裝教程請參看我的另一篇部落格:手把手演示Windows環境下安裝RabbitMQ
1、首先在[配置中心工程]進行配置:
在配置中心工程的pom檔案中新增相關的依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
然後進行相關配置:
spring:
application:
name: config-server
cloud:
config:
server:
# 指定git倉庫的地址
git:
uri: https://gitee.com/zhangsan/spring-cloud-config.git
username: zhangsan
password: 123456789
# RabbitMQ配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
management:
endpoints:
web:
exposure:
# 暴露觸發訊息匯流排的地址
# 訪問該地址即可立即重新整理配置檔案
include: bus-refresh
2、[服務提供工程]也需要進行相應配置
(服務提供工程 也就是將配置檔案託管到git的工程)
同樣 需要新增相關的依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置檔案也要進行修改:
spring:
cloud:
config:
name: user
profile: dev
label: master
discovery:
enabled: true
service-id: config-server
# RabbitMQ配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
在控制器類上新增@RefreshScope
註解以使當有最新的配置項時 重新整理配置:
@RestController
@RequestMapping("/user")
// 當有最新的配置項時 重新整理配置
@RefreshScope
public class UserController {
@Autowired
private UserService userService;
@Value("${test.name}")
private String name;
@GetMapping("/{id}")
public User queryById(@PathVariable Long id)
{
System.out.println("name : "+name);
return userService.queryById(id);
}
}
測試:
當修改了git上的配置檔案之後 傳送一個Post請求給localhost:12000/actuator/bus-refresh
(12000埠為我的配置中心專案的埠 bus-refresh為設定的路徑名稱 可以在配置檔案中修改)
此時 在專案中顯示的是配置檔案中最新的資料了
測試成功
相關文章
- Spring Cloud Bus 訊息匯流排介紹SpringCloud
- 乾貨|Spring Cloud Bus 訊息匯流排介紹SpringCloud
- 訊息匯流排Bus介紹及使用場景-訊息佇列和RabbitMQ介紹及安裝佇列MQ
- SpringCloud(六)Bus訊息匯流排SpringGCCloud
- 跟我學SpringCloud | 第八篇:Spring Cloud Bus 訊息匯流排SpringGCCloud
- SpringCloud分散式微服務雲架構 第八篇: 訊息匯流排(Spring Cloud Bus)(Finchley版本)SpringGCCloud分散式微服務架構
- 業餘草 SpringCloud教程 | 第八篇: 訊息匯流排(Spring Cloud Bus)(Finchley版本)SpringGCCloud
- [菜鳥SpringCloud實戰入門]第八章:通過訊息匯流排Spring Cloud Bus實現配置檔案重新整理(使用Kafka)SpringGCCloudKafka
- WebWorker與WebSocket實現前端訊息匯流排Web前端
- (四)spring cloud微服務分散式雲架構-配置中心和訊息匯流排(配置中心終結版)SpringCloud微服務分散式架構
- spring cloud構建網際網路分散式微服務雲平臺-訊息匯流排SpringCloud分散式微服務
- Vue事件匯流排(EventBus)使用詳細介紹Vue事件
- 使用SignalR為FineUI/Webform打造訊息匯流排SignalRUIWebORM
- java Spring Cloud企業快速開發架構之Spring Boot Starter的介紹及使用JavaCloud架構Spring Boot
- Can匯流排介紹
- 如何在 JavaScript 中實現 Event Bus(事件匯流排)JavaScript事件
- 實現一個事件匯流排(vue.prototype.$bus)?事件Vue
- spring cloud微服務分散式雲架構-Spring Cloud BusSpringCloud微服務分散式架構
- Spring Boot中使用WebSocket總結(三):使用訊息佇列實現分散式WebSocketSpring BootWeb佇列分散式
- springcloud(九):配置中心和訊息匯流排(配置中心終結版)SpringGCCloud
- 使用Spring Cloud Sleuth和OpenTelemetry實現分散式跟蹤SpringCloud分散式
- 手寫訊息匯流排LiveDataBusLiveData
- C#使用Socket實現分散式事件匯流排,不依賴第三方MQC#分散式事件MQ
- 將Abp預設事件匯流排改造為分散式事件匯流排事件分散式
- 大資料技術 - 分散式訊息流平臺:Kafka與Pulsar的介紹大資料分散式Kafka
- Android元件化方案及元件訊息匯流排modular-event實戰Android元件化
- 使用Spring Cloud Sleuth實現分散式系統的鏈路追蹤SpringCloud分散式
- JAVA 分散式 - 分散式介紹Java分散式
- java分散式服務框架Dubbo的介紹與使用Java分散式框架
- SpringCloud微服務實戰——搭建企業級開發框架(三十六):使用Spring Cloud Stream實現可靈活配置訊息中介軟體的功能SpringGCCloud微服務框架
- 使用 NSProxy 實現訊息轉發
- 使用Spring Boot實現訊息佇列Spring Boot佇列
- 基於WCF和MSMQ構建釋出/訂閱訊息匯流排(Pub/Sub Message Bus)薦MQ
- 基於可靠訊息方案的分散式事務:Lottor介紹分散式
- Otto事件匯流排框架的使用事件框架
- JAVA 多使用者商城系統b2b2c---配置中心和訊息匯流排Java
- 整合spring cloud雲架構 --spring cloud分散式系統中實現分散式鎖SpringCloud架構分散式
- 在 .NET 中深入瞭解事件匯流排的使用與實現事件