0

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

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

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

4

1 回答 1

1

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

  1. 您可以通过 Windows shell暂停队列以观察消息累积,并确认它正在工作。这当然是一个手动过程,我相信您的监控意图是自动化的。但是非常适合调试。
  2. 您可以让队列生产者和消费者在工作时分别为您写入状态。换句话说,每次生产者创建消息或消费者处理消息时,都会在某处增加计数。使用这 2 个计数来监控(两者都应该上升并总计相同或接近相同的数量)。您需要监视两者,以便知道问题发生在哪里,如果它发生。
于 2014-12-09T20:07:45.417 回答