如何在两个服务之间隔离 Hangfire 中的重复作业

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

我有两个不同的服务,它们使用相同的

Hangfire
实例来安排重复作业。我正在使用 1 个
Hangfire
仪表板。服务 1 添加一项重复性作业,而服务 2 添加三项重复性作业。问题是,服务 2 中的所有三个作业都在服务 1 的范围内执行。我想找到一个解决方案来确保第一个作业在服务 1 的范围内执行,而服务 2 添加的三个作业是在服务2的范围内执行。

如何配置

Hangfire
正确执行服务1和服务2在各自范围内添加的重复作业,确保服务2的作业不会干扰服务1的作业?

c# job-scheduling hangfire
1个回答
0
投票

通过为每个服务使用不同的队列,您可以确保服务 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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.