2013-04-10 46 views
1

我们正在尝试将NServiceBus/MSMQ集成到我们当前的Web应用程序(REST)中。NServiceBus与MSMQ性能差

运行探查,似乎一个大量的时间花费将消息发送到队列(见探查屏幕截图1,为突出显示30的总执行时间的30%)。将消息发送到MSMQ比在Mongo中保存一整套新文档(在远程服务器上运行)需要大约两倍的时间。

向MSMQ队列发送消息的速度太慢还是缺少一些配置调整是否正常?

以下是我们当前总线配置(基于NServiceBus文档 - http://support.nservicebus.com/customer/portal/articles/894008-using-nservicebus-with-asp-net-mvc):

// NServiceBus configuration 
Configure 
    .WithWeb() 
    .CastleWindsorBuilder(_container) 
    .JsonSerializer() 
    .Log4Net() 
    .MsmqTransport() 
    .IsTransactional(false) 
    .PurgeOnStartup(true) 
    .UnicastBus() 
    .ImpersonateSender(false) 
    .SendOnly(); 

和web.config中:

<MessageForwardingInCaseOfFaultConfig ErrorQueue="Error" /> 
<MsmqTransportConfig NumberOfWorkerThreads="1" MaxRetries="5" /> 
<UnicastBusConfig> 
    <MessageEndpointMappings> 
    <add Messages="Messages" Endpoint="MessageHandlers" /> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

Screenshot of ANTS profiler

+0

你在NServiceBus上有什么版本? – 2013-04-10 22:42:44

+0

你是如何描述这个的?调试器是否连接?你发送了多少封邮件? – 2013-04-10 22:44:10

+0

@JohnSimons:NSB版本是3.3.5。我们使用ANTS分析器对其进行了分析,并对我们的API进行了25K次调用;在每次迭代中,应用程序都会将少量小文档保存到Mongo中,并向NSB发送消息以进行审计。调试器未连接。 在没有连接配置文件的单独机器上,我们还在NSB和Mongo调用周围添加了一些时间日志,并且NSB发送操作一直较慢(有时差不多慢10倍)。 – 2013-04-11 07:24:27

回答

1

这看起来像一个MSMQ issue。 事务性MSMQ根本没有针对快速写入进行优化。