несколько приложений playframwork запускают запланированное задание несколько раз - PullRequest
0 голосов
/ 16 октября 2018

Мой проект использует playframework и запускает запланированное задание каждые 5 минут.Он отлично работает, когда есть только одно приложение.

Однако, когда я использую nginx для настройки двух приложений воспроизведения.Оба приложения воспроизведения запускают запланированное задание.

Как запустить только одно запланированное задание в этих двух приложениях воспроизведения?

1 Ответ

0 голосов
/ 16 октября 2018

Я вижу три решения этой проблемы:

  • Использование внешнего сервиса для составления расписания (например, cron tab).Каждые 5 минут внешняя служба вызывает частную конечную точку вашего приложения, и одно приложение будет запускать задачу

  • Использовать внешнюю базу данных (например, базу данных sql, zookeeper ...), чтобыраспределенная блокировка, где только одно приложение может получить блокировку в данный момент времени.Когда другой пытается получить блокировку для запуска задачи, задача отменяется, поскольку блокировка уже снята.

  • Использование возможностей кластера akka для создания распределенного планировщика.Для этого вы можете использовать возможности разделения, так что только один узел будет обрабатывать сообщения задания.

В зависимости от того, что вы уже используете, первые два решения могут быть проще в реализации.С помощью akka вам, возможно, придется погрузиться во множество новых вещей, чтобы достичь этого.

...