Как стать автором
Обновить

Комментарии 7

От использования хенгфайра остались негативные впечатления: 1) ограничение на только один инстанс джоба работает криво, блокируя воркеры 2) таскам нельзя задать очередь, они всегда валятся в дефаулт 3) и самое критичное: хенгфайр время от времени начинает дико спамить базу запросам на получение следующего джоба из всех воркеров(при 5 воркерах выходит около 100рпс к базе). Это может длиться около часа и потом само собой прекращается. Причину пока так и не нашли, но осадочек остался.

2) таскам нельзя задать очередь, они всегда валятся в дефаулт

Как раз эта проблема решается в статье (см. обновление — проблема 3)
Спасибо за комментарий.
вроде бы таким образом нельзя задать отложенные таски, сколько помню. а у нас как раз были отложенные.
Да, похоже, что с отложенными тасками всё не так просто. В конструктор ScheduledState() нельзя передать имя очереди…
И это еще не все. Hangfire «любит» запускать задание одновременно на нескольких воркерах (если их число больше 1). Причина, скорее всего, в багах в конкретных batabase extension. Такое поведение отмечено нами на sqlite и litedb базах. Возможно, mssql лишен этого недостатка. Если такое поведение критично, то надо либо ограничивать число воркеров единичкой, либо костылить велосипед с собственными семафорами в заданиях.
мы юзали аттрибут DisableConcurrentExecution для джобов, но это приводит к выжиранию воркеров, если джоб долгий. тоже пришлось костылить с таймаутами
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории