我们在我们的 Web 应用程序中使用 NServiceBus,并且最近发现,尽管处于连接状态,但有时会有一些消息仅位于出站队列中,但从未离开。删除它们的最快解决方案是重新启动 MSMQ 服务。我遇到的一个问题是,当重新启动或停止 MSMQ 服务时,CPU 会跳到 100%。
有没有人遇到过这种情况并找到一种方法来防止这种高负载。我不喜欢仅仅因为停止服务而中断的想法?我知道的一种方法是使用仅发送模式,但这并不理想。
更新: global.asax 应用程序中使用的配置代码开始:
IBus bus = Configure
.With()
.DefaultBuilder()
.FileShareDataBus("c:\\storage")
.XmlSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start(() => Configure.Instance.ForInstallationOn<Windows>().Install());