此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-bus 4.1.3spring-doc.cn

寻址实例

对实例进行寻址

应用程序的每个实例都有一个服务 ID,其值可以设置,其值应为以冒号分隔的 标识符,按从最不具体到最具体的顺序。默认值为 从环境中构造为 and(或 ,如果已设置)。ID 的默认值为 构造为 ,其中:spring.cloud.bus.idspring.application.nameserver.portspring.application.indexapp:index:idspring-doc.cn

  • app是 ,如果存在,或者vcap.application.namespring.application.namespring-doc.cn

  • index是 、 或 (按此顺序)。vcap.application.instance_indexspring.application.indexlocal.server.portserver.port0spring-doc.cn

  • id是 、(如果存在)或随机值。vcap.application.instance_idspring-doc.cn

HTTP 终端节点接受 “destination” 路径参数,例如 ,其中 是服务 ID。如果 ID 由总线上的实例拥有,则它处理消息和所有其他实例 忽略它。/busrefresh/customers:9000destinationspring-doc.cn

寻址服务的所有实例

“destination”参数在 Spring 中使用(带有路径分隔符 作为冒号 — ) 来确定实例是否处理消息。使用示例 从前面开始,以 “customers” 服务,而不考虑服务 ID 的其余部分。PathMatcher:/busenv/customers:**spring-doc.cn

服务 ID 必须唯一

总线尝试两次来避免处理事件 — 一次来自原始事件,一次来自队列。为此,它会检查发送服务 ID 针对当前服务 ID 的 ID 进行验证。如果服务的多个实例具有相同的 ID, 不处理事件。在本地计算机上运行时,每个服务位于不同的 port 的 port 中,该 port 是 ID 的一部分。Cloud Foundry 提供了一个索引来区分。 要确保 ID 在 Cloud Foundry 外部是唯一的,请将 对于每个服务实例来说都是唯一的。ApplicationEventspring.application.indexspring-doc.cn