|
请使用 spring-cloud-bus 5.0.1(最新稳定版本)! |
配置
自定义消息代理
Spring Cloud Bus 使用 Spring Cloud Stream 来广播消息。因此,只需将您选择的绑定器实现添加到类路径中,即可使消息流通。为该总线提供了便捷的Starters,支持 AMQP(RabbitMQ)和 Kafka(spring-cloud-starter-bus-[amqp|kafka])。一般来说,Spring Cloud Stream 依赖于 Spring Boot 自动配置约定来配置中间件。例如,可以通过 spring.rabbitmq.* 配置属性更改 AMQP 代理地址。Spring Cloud Bus 在 spring.cloud.bus.* 中包含了一些原生配置属性(例如,spring.cloud.bus.destination 是用于外部中间件的主题名称)。通常情况下,默认值已足够满足需求。
要了解如何自定义消息代理设置,请参阅 Spring Cloud Stream 文档。
追踪总线事件
总线事件(RemoteApplicationEvent 的子类)可以通过设置 spring.cloud.bus.trace.enabled=true 进行追踪。如果这样做,Spring Boot TraceRepository(如果存在)会显示每个发送的事件以及来自每个服务实例的所有确认(acks)。以下示例来自 /trace 端点:
{
"timestamp": "2015-11-26T10:24:44.411+0000",
"info": {
"signal": "spring.cloud.bus.ack",
"type": "RefreshRemoteApplicationEvent",
"id": "c4d374b7-58ea-4928-a312-31984def293b",
"origin": "stores:8081",
"destination": "*:**"
}
},
{
"timestamp": "2015-11-26T10:24:41.864+0000",
"info": {
"signal": "spring.cloud.bus.sent",
"type": "RefreshRemoteApplicationEvent",
"id": "c4d374b7-58ea-4928-a312-31984def293b",
"origin": "customers:9000",
"destination": "*:**"
}
},
{
"timestamp": "2015-11-26T10:24:41.862+0000",
"info": {
"signal": "spring.cloud.bus.ack",
"type": "RefreshRemoteApplicationEvent",
"id": "c4d374b7-58ea-4928-a312-31984def293b",
"origin": "customers:9000",
"destination": "*:**"
}
}
前面的跟踪显示,一个 RefreshRemoteApplicationEvent 从 customers:9000 发送出来,广播到所有服务,并由 customers:9000 和 stores:8081 接收(确认)。
若要自行处理确认信号,您可在您的应用中添加一个 @EventListener,用于 AckRemoteApplicationEvent 和 SentApplicationEvent 类型(并启用跟踪功能)。或者,您也可以接入 TraceRepository 类型,并从中提取数据。
| 任何 Bus 应用都可以追踪确认(acks)。然而,有时在中央服务中执行此操作会更有用,该服务可以对数据执行更复杂的查询或将其转发到专门的跟踪服务。 |