同一项工作有两个 cron 计划,但只有一个在触发

Two cron schedules on the same job, but only one is firing

我使用 Quartz 调度程序 (3.0.7) 为我们公司安排几个后台作业。我现在需要一个由两个单独的触发器触发的作业,但不知何故,该作业仅针对两个触发器之一执行。我最多使用配置文件中的两个 cron 表达式,它们具有以下值:

<!-- monthly, on the 1st day of the month, 10 minutes after midnight -->
<add key="CirculatingCouponsReportSchedule1" value="0 0/10 * ? * * *" />

<!-- weekly, on Mondays, 15 minutes after midnight -->
<add key="CirculatingCouponsReportSchedule2" value="0 1/3 * ? * * *" />

以下代码是我的应用程序代码的一个片段。它记录:...'s job is successfully scheduled for 2 cron schedules,但实际上只执行每 10 分钟触发一次的计划。

                var crons = new List<string>();

            if (CronExpression.IsValidExpression(ConfigurationManager.AppSettings["Schedule1"]))
            {
                crons.Add(ConfigurationManager.AppSettings["Schedule1"]);
            }

            if (CronExpression.IsValidExpression(ConfigurationManager.AppSettings["Schedule2"]))
            {
                crons.Add(ConfigurationManager.AppSettings["Schedule2"]);
            }

            if (crons.Any())
            {
                var job = new JobDetailImpl("MyJob", typeof(MyReportJob));
                var i = 0;

                crons.ForEach(c =>
                {
                    i++;

                    var trigger = TriggerBuilder.Create()
                        .WithIdentity($"MyReportTrigger{i}", "ReportJobs")
                        .WithCronSchedule(c)
                        .Build();

                    scheduler.ScheduleJob(job, trigger);
                });

                Logger.Log($"{nameof(SendMyReportTask)}'s job is successfully scheduled for {crons.Count} cron schedules.", System.Diagnostics.EventLogEntryType.Information);
            }
            else
            {
                Logger.Log($"{nameof(SendMyReportTask)}'s job not scheduled. No valid cron expression found.", System.Diagnostics.EventLogEntryType.Information);
            }

有人知道问题出在哪里吗?我尝试的第一件事是通过添加计数器使身份独一无二,但这没有帮助。

根据要求:据我所知,作业不能默认并行启动。

应该有一个配置来启用它,但是作业必须遵守一些规则 (afaik)。

另一种可能性是为每个触发器注册一个单独的作业实例