1

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

运行分析器,似乎花费了大量时间将消息发送到队列(请参见分析器屏幕截图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>

ANTS profiler 截图

4

1 回答 1

1

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

于 2013-04-10T15:11:52.267 回答