Azure中单个VM上的多个连续Webjob实例

时间:2015-09-22 00:46:56

标签: azure azure-webjobs azure-webjobssdk

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

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

我已经尝试在Main()中的各个线程中启动多个JobHosts,但要么不起作用,要么我做错了什么...... Webjob因为每个看起来都不能运行线程试图访问WebJobSdk.marker'。我目前的解决方案是多次发布我的Webjob,每次修改webJobName'稍微放入' webjob-publish-settings.json'以便在发布时将同一项目视为不同的Webjob。到目前为止,这种方法很有效,希望每次我需要进行任何更新时都会创建大量额外的工作。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

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

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