我在考慮使用CloudQueue.BeginAddMessage
方法進行記錄的性能方面。每次調用logger.LogMessage
都會導致將消息發送到Azure隊列。我知道每次致電BeginAddMessage
都會發送POST請求。等待它完成不是一種選擇,因爲我的目標是儘可能快地製作logger.LogMessage
方法。這就是爲什麼我打算只開啓操作並忘記(如果請求失敗,它不是那麼重要)。CloudQueue.BeginAddMessage在記錄器實現中
調用CloudQueue.BeginAddMessage
需要多長時間?
它在returninig之前執行HTTP請求初始化(如建立HTTP正文,打開連接等)嗎?
如果是,那麼我將不得不將這個初始化移動到其他線程,方法是將其封裝在異步調用中,如Task.Run(() => CloudQueue.BeginAddMessage())
。
有更好的選擇嗎?
你知道使用Task.Run創建大量線程可能會創建比http請求初始化更多的開銷,如果發生這種情況? –
是的,這是我的擔心之一。仍然不知道什麼是更好的,直到我知道BeginAddMessage如何工作 – neleus
你可以看看源代碼,看看它是如何實現的:https://github.com/Azure/azure-storage-net/blob/master/Lib/ ClassLibraryCommon /隊列/ CloudQueue.cs。 –