寻址实例

对实例进行寻址

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

  • appvcap.application.name(如果存在)或spring.application.namespring-doc.cadn.net.cn

  • indexvcap.application.instance_index,如果存在,spring.application.index,local.server.port,server.port0(按此顺序)。spring-doc.cadn.net.cn

  • idvcap.application.instance_id、如果存在或随机值。spring-doc.cadn.net.cn

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

寻址服务的所有实例

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

服务 ID 必须唯一

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