我遇到了一个挂机重复任务的情况,出于调试/记录目的,我想访问该任务的ID。
我创建/注册任务的代码如下:
RecurringJob.AddOrUpdate(Environment.MachineName, () => MyTask(), Cron.MinuteInterval(_delay));
并且要执行的代码我需要记录任务ID(这是机器名称,但显然在服务器场中将为每个服务器注册一个任务)
如何访问正在执行的Action正在运行的任务的ID?
public void MyTask()
{
var taskId = GetTheHangfireTaskIdThatTriggeredThis(); //this is the code I need
Debug.WriteLine(taskId);
}
最终,我希望确保任务仅在注册它们的服务器上运行,因为我需要在服务器场中的每台服务器上执行任务(它是从中心位置更新服务器本身的本地缓存)。如果有更好的方法来实现这一点,那么请告诉我。
答案 0 :(得分: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);
}