当我尝试从一个简单的控制台应用程序(非调试模式)向我的 Azure 服务总线队列发送 1000 条简单消息时,使用 http 模式需要 90 秒。
使用标准 nettcp 模式需要 70 秒。
其他人的速度也一样吗?我预计它会更快,但也许这是正确的?
当我尝试从一个简单的控制台应用程序(非调试模式)向我的 Azure 服务总线队列发送 1000 条简单消息时,使用 http 模式需要 90 秒。
使用标准 nettcp 模式需要 70 秒。
其他人的速度也一样吗?我预计它会更快,但也许这是正确的?
您是否在同一个线程中执行所有这些操作?尝试使用多个线程/任务并行提交消息。此外,如果您想要更高的吞吐量,您可以尝试对您的 app.config 进行一些更改:
<system.net>
<settings>
<servicePointManager expect100Continue="false" useNagleAlgorithm="false"/>
</settings>
<connectionManagement>
<add address = "*" maxconnection = "48" />
</connectionManagement>
</system.net>
最后,尝试从 Windows Azure VM(最好是同一个数据中心)中执行控制台应用程序。这将排除您的 WAN 连接的任何影响。
还要看看利用批量发送方法。Azure SDK 在服务总线客户端队列上有一个方法,允许您一次发送一批消息。它以更大的调用为代价减少了总网络开销。您可以将批处理大小调整为适合您的最大值,并将消息排队,直到您填满批处理或达到特定超时。这使您可以进行批处理,但仍然可以在合理的时间内做出响应。