如何将事件发送到PCF中的应用程序的所有实例

问题描述 投票:0回答:2

我找不到在Pivotal Cloud Foundry中向所有应用程序实例发送/广播消息的方法。我们如何通知某些事件的所有应用程序实例?如果我们使用HTTP请求,则PCF路由器会将其分派到该应用的单个实例。我们如何解决这个问题?

java spring spring-boot cloudfoundry pcf
2个回答
2
投票

@ 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)和应用程序实例的数量。

希望有帮助!


1
投票

CF,开箱即用,不提供应用程序可以订阅的任何事件队列机制。

我将做的(假设您有两个应用实例A和B):

  • [在应用程序代码中提供事件端点,例如POST / api / event(或者,如果事件应该来自另一个应用程序(例如另一个微服务),则该事件可以直接将消息发送到队列中)
  • 所有应用程序实例都在内部事件队列上监听新事件
  • 实例A从CF路由器接收呼叫,并通过在内部事件队列上发布事件来处理它,实例将不会对事件做出反应,]]
  • [当A发布事件时,A和B接收事件并进行相应处理
  • 现在,您可以使用的内部事件队列

在很大程度上取决于您的部署。在AWS上,您可以使用SQSSNS或类似的名称。据我所知,PCF也可以提供一个在此也适用的消息传递系统rabbitmq。您还可以使用其他服务的功能,这些功能将允许您订阅事件,例如redis (pub/sub commands)或类似内容。

但是,如果您提供有关您想要更具体实现的目标的更多信息,则可能会有更详细的答案。

© www.soinside.com 2019 - 2024. All rights reserved.