2016-12-09 5 views
0

У меня есть ситуация, когда у меня есть повторяющаяся задача hangfire, а для целей отладки/ведения журнала я хочу получить доступ к идентификатору этой задачи.получить идентификатор задачи для возвращаемого задания hangfire внутри самой задачи

мой код, чтобы создать/зарегистрировать задача заключается в следующем:

RecurringJob.AddOrUpdate(Environment.MachineName,() => MyTask(), Cron.MinuteInterval(_delay)); 

и код для выполнения Мне нужно войти идентификатор задачи (который является именем машины, но, очевидно, в ферме серверов там будет одна задача зарегистрирована для каждого сервера)

Как получить доступ к идентификатору задачи, которая выполняется при выполнении действия, которое выполняется?

public void MyTask() 
{ 
    var taskId = GetTheHangfireTaskIdThatTriggeredThis(); //this is the code I need 
    Debug.WriteLine(taskId); 
} 

В конце концов, я хочу, чтобы убедиться, что задачи, работать только на сервере, зарегистрированном их как мне нужно задание выполнить на каждом сервере в ферме (это обновить локальный кэш на самом сервере от а центральное расположение). Если есть лучший способ добиться этого, тогда также, пожалуйста, сообщите мне.

+0

Почему наклоняю вы просто отправить MachineName к методу MyTask()? – helgeheldre

+0

@helgehedre да, вы можете, спасибо, я не исследовал идею передачи параметра в задачу – MikeW

ответ

0

изменил его передать параметр

RecurringJob.AddOrUpdate(Environment.MachineName,() => MyTask(Environment.MachineName), Cron.MinuteInterval(_delay)); 

и

public static void MyTask(string taskId) 
    { 
     if (!taskId.Equals(Environment.MachineName)) 
     { 
      return; 
     } 

     Debug.WriteLine(taskId); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^