44. 追踪 Bus Events

可以通过设置spring.cloud.bus.trace.enabled=true来跟踪 Bus events(RemoteApplicationEvent的子类)。如果你这样做,那么 Spring Boot TraceRepository(如果它存在)将显示每个发送的 event 和来自每个服务实例的所有 ack。 Example(来自/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": "*:**"
  }
}

此跟踪显示RefreshRemoteApplicationEventcustomers:9000,broadcast 发送到所有服务,并由customers:9000stores:8081接收(确认)。

要自己处理 ack 信号,您可以为应用程序添加@EventListener AckRemoteApplicationEventSentApplicationEvent类型(并启用跟踪)。或者你可以点击TraceRepository并从那里挖掘数据。

任何 Bus application 都可以跟踪 ack,但有时在可以对数据执行更复杂查询的中央服务中执行此操作会很有用。或者将其转发给专门的跟踪服务。