监视MSMQ队列

时间:2014-12-09 20:02:09

标签: c# msmq system.messaging

我有一个写入私有MSMQ队列的应用程序。我想通过监视队列来监视应用程序是否正常工作。通常情况下,我可以使用性能计数器查看队列中的消息数,但是有一个非常激进的队列读取器。如果我的监控程序依赖于查看队列中的消息,则很可能它永远不会看到任何内容,因为在我的监控应用程序看到之前已经读取了消息。即我担心以下时间表:

--+-W-R---W-R+--W-R--W-R+---WR-W--R+-W--R-W--R+---
where W is a write
      R is a read
      + is monitoring the queue

鉴于上述情况,虽然队列中存在活动(写入和读取),但在监视事物时从不会有任何活动。

有没有办法查看过去一分钟或一小时内通过的队列项数?或者其他任何可能让我监控队列的东西?

1 个答案:

答案 0 :(得分:1)

最好的选择是这两个选项中的一个:

  1. 您可以通过Windows shell 暂停队列以观看消息累积,并确认其正常工作。这当然是一个手动过程,我相信您的监控意图是自动化的。但是非常适合调试。
  2. 您可以让队列生产者和消费者在工作时为您写入状态。换句话说,生产者每次创建消息或消费者处理消息时,都会在某处增加计数。使用这两个计数进行监控(两者都应该上升并总结为相同或接近相同的数量)。您需要监控两者,以便在发生问题时知道问题发生的位置。