48. 追踪巴士事件
可以通过设置spring.cloud.bus.trace.enabled=true
来跟踪 Bus 事件(RemoteApplicationEvent
的子类)。如果这样做,Spring Boot TraceRepository
(如果存在)将显示发送的每个事件以及每个服务实例的所有确认。以下示例来自/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
发送,Broadcast 到所有服务并由customers:9000
和stores:8081
接收(确认)的。
要自己处理确认 signal,您可以将AckRemoteApplicationEvent
和SentApplicationEvent
类型的@EventListener
添加到您的应用中(并启用跟踪)。或者,您可以点击TraceRepository
并从那里挖掘数据。
Note
任何 Bus 应用程序都可以跟踪 acks。但是,有时,在中央服务中执行此操作很有用,该服务可以对数据执行更复杂的查询,或将其转发给专门的跟踪服务。