Azure WebJob - 将处理时间限制为特定时间

时间:2017-03-21 03:39:03

标签: powershell azure azure-webjobs azure-queues

我有一个MVC网站,一个存储队列和一个WebJob。用户可以通过单击网页上的按钮来请求生成一组报告。这会将消息插入存储队列。在过去,WebJob不断运行并处理这些请求。但是报告的需求和规模已经增长到WebJob正在放慢Web应用程序的速度。我仍然希望将请求消息放在队列中,但是延迟处理所有请求直到晚上,当Web应用程序大部分处于空闲状态时。这将允许我继续使用WebJob代码和QueueTrigger功能,而不必通过转移到专用的工作者角色等来浪费资源。报告不需要立即生成,因此延迟是可以接受的。

我没有看到在处理时设置时间窗口的内置方法。我发现的唯一一个是PowerShell cmdlet,用于启动和停止WebJobs(Start-AzureWebsiteJob / Stop-AzureWebsiteJob)。所以我想我可以创建一个在午夜运行的计划PowerShell作业,启动webjob,让它运行,然后在AM的早期再次运行并停止它。

有谁知道比这更好的选择?还有什么更“官方”的东西,也许是我找不到的?

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是在插入消息时将队列中的消息隐藏一段时间。

如果您使用AddMessage方法,则可以在initialVisibilityDelay参数中指定此时间跨度值。

这样做的目的是确保消息不会立即显示在WebJob要挑选的队列中,并且只有在这个时间跨度过后才会显示。

这样的解决方案对你有用吗?

答案 1 :(得分:1)

也许我没有完全理解你的问题,但是你无法使用"触发"由CRON计划触发的WebJob?然后,您可以将其限制为特定时间

0 * 20-22 * * *

此示例将从晚上8点到晚上10点每分钟运行