我正在考虑使用 CloudQueue.BeginAddMessage
的性能方面用于记录目的的方法。每次调用logger.LogMessage
将导致向 Azure 队列发送消息。我知道每次调用BeginAddMessage
将发送 POST 请求。等待它完成不是一个选择,因为我的目标是制作 logger.LogMessage
方法尽可能快。这就是为什么我计划只触发该操作并忘记(如果请求失败,那并不那么重要)。
打电话CloudQueue.BeginAddMessage
有多耗时?
它在返回之前是否执行 HTTP 请求初始化(例如构建 HTTP 正文、打开连接等)?
如果是,那么我必须通过将其包装在异步调用中来将此初始化移动到其他线程,例如 Task.Run(() => CloudQueue.BeginAddMessage())
.
有更好的选择吗?
最佳答案
我的建议是:在程序中定义一个内存队列,logger.LogMessage() 所做的只是向内存队列添加一条新消息。此外,启动一个专用的后台线程来消耗内存队列并将日志消息上传到Azure队列。您甚至可以为这个专用线程设置一个信号量,以您可以控制的并发度上传日志消息。
关于.net - 记录器实现中的 CloudQueue.BeginAddMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681158/