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