Мое приложение использует Hangfire для обработки фоновой работы. создать фоновые задания следующим образом:Какой приоритет имеет установленное дочернее задание в Hangfire при использовании ContinueWith?
var parentJobId = _backgroundJobClient.Enqueue<IMyService>(x => x.ParentMethod(id));
_backgroundJobClient.ContinueWith<IMyService>(parentJobId, x => x.ChildMethod(id));
_backgroundJobClient.Enqueue<IMyService>(x => x.OtherMethod1(id));
_backgroundJobClient.Enqueue<IMyService>(x => x.OtherMethod2(id));
Эти методы определены в службе следующим образом:
public interface IMyService
{
[Queue(HangfireQueuePriority.Default)]
void ParentMethod(int id);
[Queue(HangfireQueuePriority.Default)]
void ChildMethod(int id);
[Queue(HangfireQueuePriority.Default)]
void OtherMethod1(int id);
[Queue(HangfireQueuePriority.Critical)]
void OtherMethod2(int id);
}
Я хотел бы, чтобы ChildMethod быть запущен, как только материнская работа завершена , Мое понимание ContinueWith заключается в том, что дочернее задание выполняется после родительского задания, но оно не указано в документации Hangfire, как скоро будет выполняться дочерняя задача.
Вопрос: что такое «приоритет» дочерней задачи над другими задачами в очереди? Есть ли вероятность того, что любая задача, определенная в очереди, будет выполняться между ParentMethod и ChildMethod? например OtherMethod1 или OtherMethod2
Это имеет смысл. Однако мне не ясно. Что произойдет, когда критическая задача (OtherMethod2) добавляется в очередь сразу после запуска ParentMethod (до обработки ChildMethod)? Какая задача будет обработана первой: задача Crital (OtherMethod2) или задача ChildMethod? –