配置

自定义消息代理

Spring Cloud Bus 使用 Spring Cloud Stream 来广播消息。因此,要让消息流淌,您只需在类路径中包含您选择的绑定器实现。总线有方便的Starters使用 AMQP (RabbitMQ) 和 Kafka (spring-cloud-starter-bus-[amqp|kafka]). 一般 说,Spring Cloud Stream 依赖于 Spring Boot 自动配置约定来配置中间件。例如,AMQP 代理地址可以使用spring.rabbitmq.*配置属性。Spring Cloud Bus 有一些原生配置属性spring.cloud.bus.*(例如,spring.cloud.bus.destination是用作外部中间件的主题的名称)。通常,默认值就足够了。spring-doc.cadn.net.cn

要了解有关如何自定义消息代理设置的更多信息,请参阅 Spring CloudStream 文档。spring-doc.cadn.net.cn

跟踪总线事件

总线事件(RemoteApplicationEvent)可以通过设置spring.cloud.bus.trace.enabled=true. 如果这样做,Spring BootTraceRepository(如果存在)显示发送的每个事件以及来自每个服务实例的所有 ack。 这 以下示例来自/trace端点:spring-doc.cadn.net.cn

{
  "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:9000stores:8081.spring-doc.cadn.net.cn

要自己处理 ack 信号,您可以添加一个@EventListener对于AckRemoteApplicationEventSentApplicationEvent类型添加到您的应用中(并启用tracing)。或者,您可以点击TraceRepository并从 那里。spring-doc.cadn.net.cn

任何总线应用程序都可以跟踪 ack。但是,有时,它是在可以执行更复杂作的中央服务中执行此作很有用查询数据或将其转发到专门的跟踪服务。