WebJob QueueTrigger - 每个函数的限制

时间:2016-11-21 12:32:41

标签: azure azure-webjobs azure-webjobssdk

我已经安装了一些Webjobs,每个Webjobs都响应了一些QueueTrigger,例如

public static void ProcessMessage([QueueTrigger("XXXXXXX")] string message, TextWriter log)
{
    //processing message
} 

public static void ProcessMessage([QueueTrigger("YYYYYY")] string message, TextWriter log)
{
    //processing message
} 

我应该将每个触发器分离到一个单独的工作吗?是否有任何理由为什么继续这条路径是一个坏主意,即由于线程限制它可以触发更少的函数执行更少的队列?

1 个答案:

答案 0 :(得分:3)

您正在做的是常见方法 - WebJobs SDK JobHost旨在处理同一应用程序中的许多不同作业功能。确实,单个主机中的所有工作功能将共享相同的进程/内存空间和限制,但对于大多数情况,这不是问题,并且是推荐的方法。

具体来说,对于QueueTrigger,您的每个函数都将有效地轮询新工作,并且当工作可用时,每个函数将分批提取16个消息(可通过JobHostConfiguration.Queues配置)并并行处理它们。

如果需要,您还可以通过增加运行WebJob的实例数量来扩展。然后,每个实例将与其他实例协同工作以处理更多负载。