我已经准备好了一些 Webjob,每个 Webjob 都会响应多个 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
}
我应该将每个触发器分离到单独的作业中吗?是否有任何原因表明继续沿着这条路径是一个坏主意,即它可以触发的队列越多,由于线程限制而执行的函数就越少?
最佳答案
您正在做的是通用方法 - WebJobs SDK JobHost 旨在处理同一应用程序中的许多不同作业功能。确实,单个主机内的所有作业功能将共享相同的进程/内存空间和限制,但对于大多数情况来说,这不是问题,并且是推荐的方法。
特别是对于 QueueTrigger,每个函数都将有效地轮询新工作,当工作可用时,每个函数将以 16 条为一组提取消息(可通过 JobHostConfiguration.Queues 配置)并并行处理它们.
如果需要,您还可以通过增加运行 WebJob 的实例数量来进行扩展。然后,每个实例将与其他实例协作以处理更多负载。
关于azure - WebJob QueueTrigger - 每个函数的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40720293/