在代码中使用Hangfire作业ID

问题描述 投票:0回答:3

我正在执行像这样的“Fire-and-Forget”方法调用。

BackgroundJob.Enqueue(() => SendEmail(name));

我想将作业 ID 传递给 SendEmail() 方法并在方法内使用它。

c# jobs hangfire
3个回答
9
投票

最简单的方法是添加

执行上下文

作业方法:。 Hangfire 论坛主题 在代码中使用 Hangfire 作业 id


2
投票

SendEmail
方法更改为如下所示...

public void SendEmail(string name, string jobId)
{ 
//Body of method
}

将 Hangfire 调用更改为如下所示...

BackgroundJob.Enqueue((string jobId) => SendEmail(name, jobId));

除非您正在寻找一项工作,并发送一封完整的电子邮件,那么您可能需要执行以下操作...

  var jobId = BackgroundJob.Enqueue(() => TaskToRun);
  BackgroundJob.ContinueWith(jobId, () => SendEmail(name, jobId));

0
投票

为了实现您的目标,只需将

PerformContext
添加到您的工作方法中:

public void SendEmail(string name, PerformContext context)
{
   string jobId = context.BackgroundJob.Id;
}

并在将作业排队时传递

null

BackgroundJob.Enqueue(() => SendEmail(name, null));

当实际执行工作时,它将被正确的

context
替换。

来源https://discuss.hangfire.io/t/use-hangfire-job-id-in-the-code/2621/2

© www.soinside.com 2019 - 2024. All rights reserved.