此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-bus 4.1.3! |
配置
自定义 Message Broker
Spring Cloud Bus 使用 Spring Cloud Stream
广播消息。因此,要使消息流向,您只需包含 Binder
在 Classpath 中选择的实现。巴士有方便的Starters
使用 AMQP (RabbitMQ) 和 Kafka (spring-cloud-starter-bus-[amqp|kafka]
).一般
说来,Spring Cloud Stream 依赖于 Spring Boot 自动配置约定
配置中间件。例如,可以使用spring.rabbitmq.*
configuration 属性。Spring Cloud Bus 有少量
中的 native configuration propertiesspring.cloud.bus.*
(例如,spring.cloud.bus.destination
是要用作外部
中间件)。通常,默认值就足够了。
要了解有关如何自定义消息代理设置的更多信息,请参阅 Spring Cloud 流文档。
跟踪总线事件
总线事件(RemoteApplicationEvent
) 可以通过设置spring.cloud.bus.trace.enabled=true
.如果这样做,则 Spring BootTraceRepository
(如果存在)显示发送的每个事件以及来自每个服务实例的所有 ACK。这
以下示例来自/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
、广播到所有服务,以及接收 (ACKED) 者customers:9000
和stores:8081
.
要自己处理 ack 信号,您可以添加一个@EventListener
对于AckRemoteApplicationEvent
和SentApplicationEvent
键入到您的应用中(并启用
跟踪)。或者,您可以点击TraceRepository
并从中挖掘数据
那里。
任何 Bus 应用程序都可以跟踪 ack。然而,有时,它是 在可以执行更复杂的 查询数据或将其转发到专门的跟踪服务。 |