此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-bus 4.1.3! |
寻址实例
对实例进行寻址
应用程序的每个实例都有一个服务 ID,其值可以设置,其值应为以冒号分隔的
标识符,按从最不具体到最具体的顺序。默认值为
从环境中构造为 and(或 ,如果已设置)。ID 的默认值为
构造为 ,其中:spring.cloud.bus.id
spring.application.name
server.port
spring.application.index
app:index:id
-
app
是 ,如果存在,或者vcap.application.name
spring.application.name
-
index
是 、 或 (按此顺序)。vcap.application.instance_index
spring.application.index
local.server.port
server.port
0
-
id
是 、(如果存在)或随机值。vcap.application.instance_id
HTTP 终端节点接受 “destination” 路径参数,例如 ,其中 是服务 ID。如果 ID
由总线上的实例拥有,则它处理消息和所有其他实例
忽略它。/busrefresh/customers:9000
destination
寻址服务的所有实例
“destination”参数在 Spring 中使用(带有路径分隔符
作为冒号 — ) 来确定实例是否处理消息。使用示例
从前面开始,以
“customers” 服务,而不考虑服务 ID 的其余部分。PathMatcher
:
/busenv/customers:**
服务 ID 必须唯一
总线尝试两次来避免处理事件 — 一次来自原始事件,一次来自队列。为此,它会检查发送服务 ID
针对当前服务 ID 的 ID 进行验证。如果服务的多个实例具有相同的 ID,
不处理事件。在本地计算机上运行时,每个服务位于不同的
port 的 port 中,该 port 是 ID 的一部分。Cloud Foundry 提供了一个索引来区分。
要确保 ID 在 Cloud Foundry 外部是唯一的,请将
对于每个服务实例来说都是唯一的。ApplicationEvent
spring.application.index