我有两个不同的服务,它们使用相同的
Hangfire
实例来安排重复作业。我正在使用 1 个Hangfire
仪表板。服务 1 添加一项重复性作业,而服务 2 添加三项重复性作业。问题是,服务 2 中的所有三个作业都在服务 1 的范围内执行。我想找到一个解决方案来确保第一个作业在服务 1 的范围内执行,而服务 2 添加的三个作业是在服务2的范围内执行。
如何配置
Hangfire
正确执行服务1和服务2在各自范围内添加的重复作业,确保服务2的作业不会干扰服务1的作业?
通过为每个服务使用不同的队列,您可以确保服务 1 和服务 2 中的作业保持独立并独立执行。
using Hangfire;
public class MyJobService
{
public void ScheduleJobForService1()
{
// Add a job to "service1" queue
BackgroundJob.Enqueue(() => YourJobMethod(), new EnqueuedState { Queue = "service1" });
// Schedule a recurring job for Service 1 in "service1" queue
RecurringJob.AddOrUpdate(() => YourRecurringJobMethod(), Cron.Daily, TimeZoneInfo.Utc, "service1");
}
public void ScheduleJobForService2()
{
// Add a job to "service2" queue
BackgroundJob.Enqueue(() => YourJobMethod(), new EnqueuedState { Queue = "service2" });
// Schedule recurring jobs for Service 2 in "service2" queue
RecurringJob.AddOrUpdate(() => YourRecurringJobMethod(), Cron.Hourly, TimeZoneInfo.Utc, "service2");
}
public void YourJobMethod()
{
// Your job logic here
}
public void YourRecurringJobMethod()
{
// Your recurring job logic here
}
}