0

我需要處理的分離隊列的大量,隊列需要分開但在相同的方式處理多線程host.RunAndBlock(),我不想設置多個queue-功能,所以我認爲這個解決方案,但我不知道它是做一個安全的方式:它是安全的在蔚藍WebJobs

var connectors = GetTheConnectors(); 

     var tasks = new List<Task>(); 
     foreach (var item in connectors) 
     { 
      var task = Task.Factory.StartNew(() => { 
       var host = new JobHost(new JobHostConfiguration 
       { 
        NameResolver = new QueueNameResolver(item.Name) 
       }); 
       host.RunAndBlock(); 
      }); 
      tasks.Add(task); 
     } 

     Task.WaitAll(tasks.ToArray()); 

如果沒有,任何人有一個更好的解決方案?

回答

1

理想情況下,你會寫每個隊列獨立的功能,並使用一個單一的JobHost - 這是JobHost設計當然在上班的路上。我明白,儘管在你的情況下,你的大量隊列使得這很困難?

有每個隊列方法單獨JobHost是相當沉重的重量 - 這會是我的主要關注點。我們有一些客戶訴諸codegen來涵蓋這樣的場景 - 他們根據輸入的元數據產生他們的功能。我其實有一個這樣做的項目:azure-webjobs-sdk-script。此庫導出的類型允許您使用基於元數據輸入的IL Gen在內存中生成SDK函數。對於生成的函數,您可以指定操作,以在觸發函數時調用。您可以看到如何基於動態生成的函數運行JobHost的示例in the tests here

所以這個映射到您的情況,您可以生成每個要監視隊列功能,並擁有所有這些功能漏斗到同一個調用的動作。

+0

對不起,我沒有更早respons,在開始的時候將只舉幾個例子,但它可以迅速升級。 腳本的解決方案似乎有趣隊列,但它似乎很難調試/測試? – Cinaird

+0

但要澄清一下,看起來我的方法是安全的但很重,但不是比多次調整一項工作更重要?所以唯一的危險是它會消耗當前機器的功率? – Cinaird