作为自动启动/停止我们的一些 NServiceBus 服务的努力的一部分,我想知道服务何时完成处理其输入队列中的所有消息。
问题是,当 NServiceBus 服务正在运行时,我的 C# 代码报告的消息比实际存在的消息少。所以当还剩下一条消息时,它认为队列是空的。如果服务停止,它会报告“正确”数量的消息。这很令人困惑,因为当我自己使用计算机管理应用程序中的专用队列视图检查队列时,它会显示“正确”的数字。
我正在使用以下 C# 代码的变体来查找消息计数:
var queue = new MessageQueue(path);
return queue.GetAllMessages().Length;
我知道当有很多消息时这会表现得很糟糕。我正在检查的队列一次只能有少量消息。
任何见解或建议将不胜感激!
更新:我应该提到此服务位于分发服务器之后,该分发服务器在尝试关闭此服务之前已关闭。所以我有信心不会将新消息添加到服务的输入队列中。