监视 MSMQ 队列



>我有一个写入专用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

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

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

最好的选择是以下 2 个选项之一:

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

最新更新