2017-04-25 24 views
0

我有一個從ServiceBus主題讀取消息的Azure WebJob,我正在尋找加速它的方法。我已經看到了使用多個工廠和異步方法執行此操作的方法,但這些示例並不適用於WebJob,我不確定如何將其應用於Web工作,任何建議或指向相關文章的鏈接都會很多不勝感激!如何加快WebJob中Azure ServiceBus主題的讀取速度?

我看到的文章加快使用ServiceBus的想法在這裏:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements我認爲在一個正常的EXE我可以使用多工廠和異步的想法,但與WebJob我有一個方法ServiceBusTrigger屬性,所以我不確定我是否可以在WebJob中使用本文中的想法。

+0

使用異步/等待不會使您的代碼運行得更快,但它可以讓您的代碼進一步擴展。 Async/await只是確保在異步操作執行時,調用線程不會被阻塞並等待結果。該線程可用於執行其他操作。當異步調用返回時,將分配一個線程以繼續執行。 –

回答

1

如果您使用的是ServiceBusTrigger,您幾乎被鎖定到一個單獨的消息接收器中,並將OnMessage處理程序設置爲要配置的併發性。爲了獲得吞吐量,您可以使用NoAutomaticTrigger webjob並創建自己的基礎結構來處理消息處理。使用這種方法,您可以創建多個消息接收器,每個消息接收器具有一個工廠(通道),並且在每個接收器上設置併發。異步(如果你不使用它)將有助於以及@Rob指出。

這種方法的缺點是您需要自己做所有事情或者使用第三方爲您提供中間件位。 NServiceBus或MassTransit是兩個選項。 NServiceBus有一個show case,它使用可以轉換爲使用服務總線的webjobs和存儲隊列。

+0

太好了,謝謝肖恩! –