【发布时间】:2020-05-19 10:03:26
【问题描述】:
我无法找到向 Pivotal Cloud Foundry 中的所有应用程序实例发送/广播消息的方法。我们如何向所有应用程序实例通知某些事件?如果我们使用 HTTP 请求,PCF 路由器会将其分派给应用程序的单个实例。我们该如何解决这个问题?
【问题讨论】:
标签: java spring spring-boot cloud-foundry pcf
我无法找到向 Pivotal Cloud Foundry 中的所有应用程序实例发送/广播消息的方法。我们如何向所有应用程序实例通知某些事件?如果我们使用 HTTP 请求,PCF 路由器会将其分派给应用程序的单个实例。我们该如何解决这个问题?
【问题讨论】:
标签: java spring spring-boot cloud-foundry pcf
@Florian 所说的可能是更安全的选择,但如果您想要快速简单的操作,您可以使用 X-CF-APP-INSTANCE 标头将 HTTP 请求直接发送到应用实例。标头的格式为YOUR-APP-GUID:YOUR-INSTANCE-INDEX。
https://docs.cloudfoundry.org/concepts/http-routing.html#app-instance-routing
因此,给定一个应用程序 guid,您可以迭代实例的数量,例如 0 到 5,并向每个实例发送一个 HTTP 请求。请务必检查响应以确认每个都成功。
这还要求您知道应用的应用 guid(即cf app <name> --guid)和应用的实例数。
【讨论】:
CF 开箱即用,不提供任何可供应用订阅的事件队列机制。
我会做什么(假设您有两个应用实例 A 和 B):
现在,您可以使用的内部事件队列在很大程度上取决于您的部署。在 AWS 上,您可能可以使用 SQS 或 SNS 或类似的东西。据我所知,PCF 也可能提供一个适合这里的消息传递系统rabbitmq。您还可以使用其他服务的功能来订阅事件,例如 redis (pub/sub commands) 或类似的。
不过,如果您提供更多关于您想要实现的目标的详细信息,则可以提供更详细的答案。
【讨论】: