首页 文章

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

提问于
浏览
0

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

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

有没有人知道比这更好的选择?也许我找不到更“官方”的东西?

2 回答

  • 1

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

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

    这样做的目的是确保消息不会立即显示在队列中以供WebJob选取,并且只有在此时间 Span 过后才会显示 .

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

  • 1

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

    0 * 20-22 * * *
    

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

相关问题