我们可以将 HangFire 配置为在不同的时间间隔为每个用户安排一个作业吗?

Can we configure HangFire to schedule a job per user at different time intervals?

我们想为 UI 的用户提供在 15 分钟到 23:59 小时的时间范围内安排工作的可行性。不同的用户可以 select 不同的时间段来 运行 他们的工作。

例如:
场景 1:用户 A 希望将作业安排为每 15 分钟 运行。
场景 2:用户 B 希望将作业安排为每 30 分钟 运行。
等等

假设这是一个循环作业,您可以将作业 uid 格式化为 "Do Stuff ()"。对于每个用户,使用 AddOrUpdate() 将任务注册到他们自己的 cron 计划。

我会 post 回答我自己的问题。 我使用了带有 唯一标识符 (即 $"userid_{job.UserId}" )的重复作业,这是 Recurring.AddOrUpdate( ) 为每个用户创建单独的重复作业的方法。请看下面的代码来理解。 现在 Hangfire 将为 4 个不同频率的不同用户创建 4 个重复作业。

            List<Scheduler> list = new List<Scheduler>
            {               
                new Scheduler { EveryXMinutes = 3, UserId = 1023028, On = true },
                new Scheduler { EveryXMinutes = 5, UserId = 1023023, On = true },
                new Scheduler { EveryXMinutes = 10, UserId = 1023025, On = true },
                new Scheduler { EveryXMinutes = 15, UserId = 1023027, On = true }
            };
            foreach (var job in list)
            {
                if (job.On)
                {
                    RecurringJob.AddOrUpdate($"userid_{job.UserId}", () => demoService.RunTaskDemo2(job.UserId), $"*/{job.EveryXMinutes} * * * *");
                }
                else
                {
                    RecurringJob.RemoveIfExists($"userid_{job.UserId}");
                }
            }

RunTaskDemo2(int)是为每个用户运行的常用方法

        public void RunTaskDemo2(int userid)
        {
            // Any code of your own
            Console.WriteLine("--------------&&&&&----------------------");
            Console.WriteLine($"RUNNING TASK FOR USERID {userid} - {i.ToString()}");
            Console.WriteLine("--------------^^^^^^^----------------------");
        }

我希望这是解决方案。