2012-10-12 183 views
5

当我尝试从简单控制台应用程序(不处于调试模式)向我的Azure服务总线队列发送1000条简单消息时,使用http模式需要90秒。Azure服务总线速度

使用标准nettcp模式需要70秒。

其他人的速度也得到了吗?我预计它会更快,但也许这是正确的?

回答

6

你是在同一个线程中完成所有这些吗?尝试使用多个线程/任务并行提交消息。另外,如果你想要更高的吞吐量,你可以尝试做一些改变你的app.config:

<system.net> 
    <settings> 
     <servicePointManager expect100Continue="false" useNagleAlgorithm="false"/> 
    </settings> 
    <connectionManagement> 
     <add address = "*" maxconnection = "48" /> 
    </connectionManagement> 
    </system.net> 

最后,尝试从Windows Azure的VM(最好是同一个数据中心)内执行的控制台应用程序。这将排除您的WAN连接的任何影响。

+0

尝试使用中型或更大型虚拟机,较小的虚拟机具有有限的IO。 –

+4

Parallel.For(0,1000,i => SendM(i,client))并且您的配置更改将时间缩短为10秒。谢谢! – Martin

1

另请参阅利用批处理发送方法。 Azure SDK在Service Bus Client Queue上有一个方法,允许您一次发送一批消息。它以更大的呼叫为代价减少了总的网络开销。您可以将批处理大小调整为适合您的最大值,并对消息进行排队,直至填满批处理或达到特定超时时间。这可以让您批量生产,但仍能在合理的时间内作出响应。