2013-04-10 42 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根本沒有針對快速寫入進行優化。