在Azure Scheduler中,如何以编程方式创建定期的月度作业?

时间:2014-06-09 14:54:12

标签: azure scheduler azure-scheduler

我已经能够使用Microsoft Azure Scheduler Management Library在Azure Scheduler中成功安排作业,除了每周特定日期之外的所有时间间隔。例如,我需要安排一个在该月的第一个星期四每1个月运行一次的重复性工作。 Azure Scheduler门户允许这样做,但我无法弄清楚如何使用Azure库对此进行编码。

以下是我尝试过的最新代码。 Azure Scheduler最终创建每月定期作业(在Azure门户中查看)但它没有显示任何星期几的选择(它们都未经检查),因此代码不起作用。

我在网上搜索了详尽的文档或示例,以便在此方案中使用调度程序库,但是空白了。我正在寻找一个有效的代码示例,用于每月重复发生。

var monthlyOccurrence = new List<JobScheduleMonthlyOccurrence>();
monthlyOccurrence.Add(new JobScheduleMonthlyOccurrence() { Day = JobScheduleDay.Thursday, Occurrence = 1 });

JobCreateOrUpdateResponse jobResp = schedClient.Jobs.CreateOrUpdate("testRecurrenceIssue", new JobCreateOrUpdateParameters
{
    Action = new JobAction
    {
        Request = new JobHttpRequest { Uri = new Uri("http://www.myservice.com"), Method = "GET" },
    },
    Recurrence = new JobRecurrence
    {
        Frequency = JobRecurrenceFrequency.Month,
        Interval = 1,
        EndTime = new DateTime(2014, 12, 31),
        Schedule = new JobRecurrenceSchedule
        {
            Days = null,
            Hours = null,
            Minutes = null,
            MonthDays = null,
            MonthlyOccurrences = monthlyOccurrence,
            Months = null
        }
    }
});

请注意,我已经能够安排每月特定日期的每月重复,例如“在第1,14,21和28天每月运行”,但无法弄清楚如何编码特定日期我上面提到过的一周情景。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

我是负责管理库的PM之一,包括Scheduler SDK。他们是我们的合作伙伴团队之一,我们支持他们开发SDK。此时,Scheduler SDK正常运行,我们在开发其他即将发布的其他产品的过程中使用了他们的SDK,因此我可以证明它在大多数使用中都具有此功能。 - 情况。我也会要求Scheduler PM看一下这篇文章,因为他可能有关于SDK状态的其他信息,并且可能有其他信息可以帮助你开发。

在GitHub上看看这个回购。我把它作为设置预定WebJobs的原型。由于WebJobs功能实际上利用调度程序来安排作业&#39;执行,这似乎是一个非常好的演示案例,展示了如何在MAML中一起使用2个不同的Azure资产。

https://github.com/bradygaster/maml-demo-scheduled-webjob-creator

答案 1 :(得分:0)

这是一个适合我的代码段。正如您所提到的,JobScheduleDay.Sunday存在一个问题。我们正在积极研究这个问题。

{
JobCreateOrUpdateResponse jobResp = schedClient.Jobs.CreateOrUpdate("testComplexRecurrenceTwoDays", new JobCreateOrUpdateParameters
            {
                Action = new JobAction
                {
                    Request = new JobHttpRequest { Uri = new Uri("http://www.bing.com"), Method = "GET" },
                },
            Recurrence = new JobRecurrence
            {
                Frequency = JobRecurrenceFrequency.Month,
                Schedule = new JobRecurrenceSchedule
                {
                    Days = null,
                    Hours = null,
                    Minutes = null,
                    MonthDays = null,
                    MonthlyOccurrences = new List<JobScheduleMonthlyOccurrence> { 
                        new JobScheduleMonthlyOccurrence { Day = JobScheduleDay.Thursday, Occurrence = 1}
                        },
                    Months = null
                }
            }
            });
}