Фоновое задание ABP выполняется несколько раз под балансом нагрузки - PullRequest
0 голосов
/ 06 декабря 2018

У нас есть служба, разработанная ABP, и она имеет несколько фоновых заданий, некоторые фоновые задания запускаются бизнес-действиями, а некоторые фоновые задания запускаются таймером.

Теперь мы разворачиваем наш сервис под балансировкой нагрузки, затем у нас возникают проблемы.Сценарий таков: служба хоста 1 запущена, и в то же время в службе 1 выполняются фоновые задания, затем мы запускаем службу хоста 2 (до того, как она будет остановлена, например, может быть из-за поддержки), поскольку обе службы 1и служба 2 использует одну и ту же базу данных, поэтому при запуске службы 2 она считывает незавершенные фоновые задания из базы данных и запускает ее.Но эти задания уже обработаны службой 1, и это приводит к неожиданному результату.

У меня вопрос для моего случая, как это исправить и какова лучшая практика?

1 Ответ

0 голосов
/ 10 декабря 2018

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

  1. установить IsItRunning=true при запуске задания.
  2. запустить задание, если IsItRunning == false
  3. установить IsItRunning=false при запускезадание завершено.

все экземпляры будут запускать задание, но ваш настоящий фрагмент кода будет выполняться только один раз.

...