【发布时间】:2023-04-09 20:23:01
【问题描述】:
我们正在尝试将 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>
【问题讨论】:
-
你在 NServiceBus 上的哪个版本?
-
你是如何分析这个的?是否附加了调试器?您发送了多少条消息?
-
@JohnSimons:NSB 版本是 3.3.5。我们使用 ANTS 分析器对其进行了分析,对我们的 API 进行了 25K 次调用;在每次迭代中,应用程序都会将少量小文档保存到 Mongo 中,并向 NSB 发送一条消息以进行审计。未附加调试器。在没有附加分析器的单独机器上,我们还添加了一些有关 NSB 和 Mongo 调用的计时日志,并且 NSB 发送操作始终较慢(有时慢了近 10 倍)。
-
您每秒收到多少条消息? (我在我的机器上进行普通发送大约 4000 msg/s)
-
你在本地运行 mongo 吗?
标签: c# .net msmq nservicebus