3

我在 Azure 网站上运行了一个连续的 Webjob。它负责在从 QueueTrigger 检索项目后做一些工作。我正在尝试提高从队列中处理项目的速率。当我扩展我的应用服务计划时,处理速率会按预期增加。

我担心的是,仅仅为了运行我的 Webjob 的额外实例而为额外的虚拟机付费似乎是一种浪费。我正在寻找在单个服务器上运行同一 Webjob 的多个实例的选项/最佳实践。

我已经尝试在 Main() 中的单个线程中启动多个 JobHost,但要么不起作用,要么我做错了什么......由于看起来每个线程都试图访问“WebJobSdk”,Webjob 将无法运行。标记'。我当前的解决方案是多次发布我的 Webjob,每次在“webjob-publish-settings.json”中稍微修改“webJobName”,以便在发布时将同一个项目视为不同的 Webjob。到目前为止,这很好用,希望每次我需要进行任何更新时都会产生大量额外的工作。

最终,我正在寻找一些关于完成此任务的推荐方法的建议。理想情况下,我希望通过代码运行多个实例,并且只需要在需要更新代码时发布一次。

有什么想法吗?

4

1 回答 1

4

您可以使用 JobHostConfiguration.QueuesConfiguration。BatchSizeNewBatchThreshold设置来控制队列处理的并发级别。后一个 NewBatchThreshold 设置是当前正在进行的 beta1 版本中的新设置。但是,通过在 Nuget 包管理器中启用“预发布”包,如果您想尝试它,您将看到新版本。提高 NewBatchThreshold 设置会增加并发级别 - 例如,将其设置为 100 意味着一旦当前运行的队列函数的数量下降到 100 以下,将获取一批新消息以进行并发处理。

标记文件错误已在此提交中修复了一段时间,并且再次成为当前正在进行的 v1.1.0 版本的一部分。

于 2015-09-22T02:46:01.273 回答