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

标签 azure azure-webjobs azure-webjobssdk

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

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

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

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

有什么想法吗?

最佳答案

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

标记文件错误已在 this commit 中修复不久前,这又是当前正在进行的 v1.1.0 版本的一部分。

关于azure - Azure 中单个 VM 上连续 Webjob 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32706675/

相关文章:

azure - Azure WebJobs sdk 是否可以按需/调度程序读取预先存在的 blob?

spring - 通过 Flux<DataBuffer> 和 DataBufferUtils.write 通过输出流将非常大的文件下载到 Azure Blob 存储时出现问题(

azure - 连续的WebJob自动停止

azure - 如何在最新的azure webjob 3.03中指定AzureWebJobsStorage

powershell - 来自 PowerShell Azure WebJob 的 "Window title cannot be longer than 1023 characters"

c# - 为什么我的 Azure WebJobs "settings.job"文件被忽略?

Azure Web 作业 - 授权基本 header

azure - pyspark从所有列的数据中删除控制字符的最佳方法

azure - 将目录的所有内容上传到存储帐户容器

azure - 在 kubernetes 内的 server.xml 中设置环境变量