Как я могу «отбросить» новую задачу из очереди, если команда уже обрабатывается?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу «отбросить» новую задачу из очереди, если команда уже обрабатывается?

Сообщение Anonymous »

Я настроил Hangfire в службе Windows, которую я начинаю с _server = new BackgroundJobServer();
У меня настроено около 30 команд, каждая с разными командами/параметрами (я считаю, что это базовая настройка).
Каждая задача должна выполняться непрерывно каждые 1 минуту. Поэтому я настроил столбцы Cron и Frequency соответственно как */1 * * * * и Каждую 1 минуту.
Проблема в следующем< /strong>: если я поставлю в очередь 30 команд, и некоторые из них занимают более 1 минуты (т. е. 10 минут из-за тяжелого процесса, который необходимо выполнить), он будет постоянно ставить в очередь каждую задачу (в том числе и те, которые уже обрабатываются), что приведет к блокирующая/бесконечная очередь для задачи, которая не может быть исключена из очереди в течение 1 минуты.
Пример метода (т. е. команды) у меня есть:
public void CMS1Integration(string systemCode)
public void CMS2Integration(string systemCode)
public void CMS3Integration(string systemCode)

Таким образом, метод CMS1Integration может выполняться параллельно, но по одному для каждого передаваемого мной системного кода. Таким образом, CMS1Integration("cms1Name1") + CMS1Integration("cms1Name2") может работать параллельно, но не CMS1Integration("cms1Name1") + CMS1Integration("cms1Name1") (потому что он имеет тот же системный код).
Как я могу решить эту проблему, чтобы избежать повторной постановки в очередь уже обработанной задачи?
Примечание: они поставлены в очередь как повторяющиеся задания:
...
RecurringJob.AddOrUpdate(hangFireCmd.Name, GetAction(hangFireCmd), hangFireCmd.Cron, TimeZoneInfo.Local);
...

Просматривая таблицу Set, я нахожу следующий список (в качестве примера):
Id Key Score Value ExpireAt
24279 recurring-jobs 1717657740 cms1Name1 NULL
24280 recurring-jobs 1717657740 cms1Name2 NULL
24281 recurring-jobs 1717657740 cms1Name3 NULL
24282 recurring-jobs 1717657740 cms2Name1 NULL
24283 recurring-jobs 1717657740 cms2Name2 NULL
24284 recurring-jobs 1717711800 cms3Name1 NULL
24285 recurring-jobs 1717657740 cms3Name2 NULL
24286 recurring-jobs 1717657740 cms3Name3 NULL
24287 recurring-jobs 1717657740 cms3Name4 NULL


Подробнее здесь: https://stackoverflow.com/questions/785 ... processing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»