1

我有一個蔚藍的webjob MyTestWebJob如何在一個觸發消息上多次執行相同的webjob方法?

Function.cs

public static void ProcessQueueMessage([QueueTrigger("Testqueue")] string message, TextWriter log) 
     { 
      log.WriteLine(message); 
     } 

我想是因爲我想讓我的應用程序的多租戶所以每tenantIdTestqueue有消息就西港島線執行它來執行ProcessQueueMessage多個時間

基本上我怎麼才能用azure webjob實現多租戶?

任何人都可以給我提示或客戶觸發代碼?

public static void ProcessQueueMessage([QueueTrigger("Testqueue")] string message, TextWriter log) 
{ 
    foreach (var id in tenantIds) 
    { 
     log.WriteLine(message); 
    } 
} 

回答

2

如果要並行每個租戶的處理也有一些技巧:

4

像你想在每ProcessQueueMessage消息排隊的時間來執行代碼爲每個租戶聽起來比較。

  1. 多線程單個webjob。

與@viperguynaz提供的代碼類似,只是將每個承租人處理的邏輯放入其自己的線程中。有很多不同的技術可以做到這一點。這個缺點是因爲每個線程都會執行異步操作,你會失去Web作業儀表板的一些細節。

  • 創建webjob鏈
  • 對於需要你可以創建一個作業,其任務是採取單一隊列項和爆炸的每個租戶被執行一次動詞它作爲每個租戶的新隊列項目。您需要負責一個Web工作,負責在所有租戶之間爆發該操作,然後負責處理每個租戶的操作的另一個Web工作。這種方法的好處在於,它的超級清理(您的分離租戶操作的邏輯與正在執行的實際邏輯是分開的)並且可以同步執行處理,從而允許Web作業儀表板按預期工作。這種方法的不足之處在於,你將在啓動'爆炸'任務時得到一點延遲,但這不應該太重要嗎?畢竟,它的背景過程呢? :)

    默認情況下,Web作業從隊列中拉出一批16個項目並行運行它們。你可以調整這些設置。這裏是一個URL的更多細節:

    https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#config

    相關問題