我已经安装了一些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
}
我应该将每个触发器分离到一个单独的工作吗?是否有任何理由为什么继续这条路径是一个坏主意,即由于线程限制它可以触发更少的函数执行更少的队列?
答案 0 :(得分:3)
您正在做的是常见方法 - WebJobs SDK JobHost旨在处理同一应用程序中的许多不同作业功能。确实,单个主机中的所有工作功能将共享相同的进程/内存空间和限制,但对于大多数情况,这不是问题,并且是推荐的方法。
具体来说,对于QueueTrigger,您的每个函数都将有效地轮询新工作,并且当工作可用时,每个函数将分批提取16个消息(可通过JobHostConfiguration.Queues
配置)并并行处理它们。
如果需要,您还可以通过增加运行WebJob的实例数量来扩展。然后,每个实例将与其他实例协同工作以处理更多负载。