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

Azure WebJob - Limit Processing Time to Specific Hours

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

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

有谁知道比这更好的选择吗?还有什么 "official" 我可能找不到的吗?

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

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

这样做的目的是确保消息不会立即在 WebJob 选取的队列中可见,并且只有在该时间跨度过去后才会变得可见。

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

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

0 * 20-22 * * *

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