2016-11-21 33 views
1

我已经有了几个Webjobs,每个Webjobs都响应一些QueueTriggerWeb工作队列触发器 - 每个功能的限制

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

看看这个答案http://stackoverflow.com/questions/40273484/azure-ad-web-job-performance-impact-of-multiple-functions-in-the-same-web-job/40295414 #40295414 – Thomas

+0

@Thomas,谢谢你,这非常有用,并让我考虑将它们中的一部分分开至少 – Flexicoder

回答

3

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

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

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

+0

你有没有计划支持'MaxDequeueCount'每个触发器而不是整个作业主机?就我而言,这似乎是有道理的,因为在我的管道中毒之前,多个队列可以有不同的出队计数,具体取决于他们的目的。 – GGirard

相关问题