【发布时间】:2016-11-18 15:49:45
【问题描述】:
我正在考虑使用CloudQueue.BeginAddMessage 方法进行日志记录的性能方面。每次调用 logger.LogMessage 都会向 Azure 队列发送一条消息。我知道每次调用BeginAddMessage 都会发送一个POST 请求。等待它完成不是一种选择,因为我的目标是使logger.LogMessage 方法尽可能快。这就是为什么我打算只触发操作并忘记(如果请求失败,它并不那么重要)。
拨打CloudQueue.BeginAddMessage需要多长时间?
它在返回之前是否执行 HTTP 请求初始化(如构建 HTTP 主体、打开连接等)?
如果是,那么我将不得不将此初始化移动到其他线程,方法是将其包装在异步调用中,例如 Task.Run(() => CloudQueue.BeginAddMessage())。
有更好的选择吗?
【问题讨论】:
-
您确实意识到使用 Task.Run 创建大量线程可能会产生比 http 请求初始化更多的开销,如果发生这种情况?
-
是的,这是我的担忧之一。在我知道 BeginAddMessage 的工作原理之前,我仍然不确定什么更好
-
可以看源码看看是怎么实现的:github.com/Azure/azure-storage-net/blob/master/Lib/….
标签: .net performance azure asynchronous azure-storage