参考答案:
Spring Cloud Bus 是一个事件总线,用于在分布式系统中广播消息,主要用于传播配置变更事件,实现 Spring Cloud Config 配置的实时更新。它通过消息中间件(如 RabbitMQ 或 Kafka)将事件分发到多个服务实例,达到全局通知的效果。
消息传递机制
事件驱动模型
配置刷新事件传播
/actuator/bus-refresh
端点时,会生成一个 RefreshRemoteApplicationEvent
。/actuator/bus-refresh
端点:
1curl -X POST http://<server>/actuator/bus-refresh
RefreshRemoteApplicationEvent
并发布到消息中间件。RefreshRemoteApplicationEvent
后,触发本地的刷新逻辑(调用 /actuator/refresh
),重新加载配置。[Client] --> [/actuator/bus-refresh] --> [Message Broker (RabbitMQ/Kafka)]
↓ ↙ ↘
[Service A] ------------------> [Service B] ---------> [Service C]
Client
发送刷新请求到 Service A
。Service A
通过消息中间件广播刷新事件。Service B
和 Service C
接收事件并执行配置刷新。解耦通信:
广播与分区:
destination
参数指定只刷新某些服务。依赖 Spring Cloud Stream:
1<dependency> 2 <groupId>org.springframework.cloud</groupId> 3 <artifactId>spring-cloud-starter-bus-amqp</artifactId> <!-- RabbitMQ --> 4</dependency>
或
1<dependency> 2 <groupId>org.springframework.cloud</groupId> 3 <artifactId>spring-cloud-starter-bus-kafka</artifactId> <!-- Kafka --> 4</dependency>
1spring: 2 rabbitmq: 3 host: localhost 4 port: 5672 5 username: guest 6 password: guest
1management: 2 endpoints: 3 web: 4 exposure: 5 include: bus-refresh
最近更新时间:2024-12-25