2016-11-21 74 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

相關問題