Как отправить события на все экземпляры приложения в PCF - PullRequest
0 голосов
/ 03 февраля 2020

Я не могу найти способ отправить / передать сообщение всем экземплярам приложения в Pivotal Cloud Foun dry. Как мы можем уведомить все экземпляры приложения о некоторых событиях? Если мы используем HTTP-запрос, маршрутизатор PCF отправит его одному экземпляру приложения. Как мы можем решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

То, что сказал @Florian, возможно, является более безопасным вариантом, но если вы хотите что-то быстрое и простое, вы можете отправлять HTTP-запросы непосредственно в экземпляр приложения, используя заголовок X-CF-APP-INSTANCE. Формат заголовка: YOUR-APP-GUID:YOUR-INSTANCE-INDEX.

https://docs.cloudfoundry.org/concepts/http-routing.html#app -instance-routing

Таким образом, с учетом guid приложения вы можете выполнить итерацию по числу экземпляров, скажите от 0 до 5 и отправьте HTTP-запрос каждому. Обязательно проверьте ответ, чтобы убедиться, что каждый из них успешно выполнен.

Для этого также необходимо знать руководство приложения для вашего приложения (т. Е. cf app <name> --guid) и количество экземпляров вашего приложения.

Надеюсь, это поможет!

1 голос
/ 04 февраля 2020

CF, из коробки, не предоставляет никакого механизма очереди событий, на который приложения могут подписаться.

Что бы я сделал (если у вас есть два экземпляра приложений A и B):

  • Укажите конечную точку события в коде приложения, например, POST / api / event (альтернативно, если событие должно возникать из другого приложения (например, из другого микросервиса), это может напрямую отправлять сообщения в очередь)
  • Все экземпляры приложения прослушивают внутреннюю очередь для новых событий.
  • Экземпляр A получает вызов от маршрутизатора CF и обрабатывает его, выдавая событие на внутреннем . очередь событий , экземпляр не будет реагировать на событие, но
  • Когда A публикует событие, A и B получают событие и обрабатывают его соответственно

Теперь внутренняя очередь событий , которую вы можете использовать, сильно зависит от вашего развертывания. На AWS вы, вероятно, можете использовать SQS или SNS или что-то подобное. PCF, как я знаю, может также предоставить систему обмена сообщениями, которая подойдет и здесь: rabbitmq . Вы также можете использовать функции других служб, которые позволят вам подписаться на события, такие как redis (команды pub / sub) или аналогичные.

Если вы предоставите больше информации о том, что вы хотите однако для достижения более конкретной возможности можно было бы получить более подробный ответ.

...