set the max of concurrent jobs Quartz.Net
在一个IScheduler对象内的服务窗口中,每次都有很多要运行的作业。但是,当您开始CPU工作时,将获得100%的使用率。我想限制并发作业的运行,以避免过多的资源使用。该目标一次可以运行大约3个流程。或多或少像多线程中的标准semaforo。我正在提供一个代码示例来演示我如何制定时间表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | _schedulerQuartz = StdSchedulerFactory.GetDefaultScheduler(); for(int i = 0; i <=10;i++){ TriggerBuilder triggerBuilder = TriggerBuilder.Create() .WithIdentity("TEST"+i.toString(),"TEST"+i.toString()) .StartNow(); triggerBuilder.WithSchedule(SimpleScheduleBuilder.RepeatSecondlyForever(60)); ITrigger trigger = triggerBuilder.Build(); IJobDetail job = JobBuilder.Create(typeof(MYPROCESS)) .WithIdentity("TEST2"+i.toString(),"TEST2"+i.toString()) .UsingJobData("ClientId", 0) .UsingJobData("UserId", 0) .Build(); _schedulerQuartz.ScheduleJob(job, trigger); } _schedulerQuartz.Start(); |
您应该可以通过将线程池大小定义为3来创建此限制。不会有超过三个线程来处理请求,因此只能同时运行三个作业。请注意,这可能会导致失火,并且必须制定失火政策。
1 2 3 4 5 |