VbScript - 使用msmq对象在MSMQ中获取最早的消息时间

时间:2012-04-26 15:26:29

标签: vbscript msmq message-queue

我需要在队列中获得最早的消息年龄。 在使用wmi的情况下有这样的属性:

myQueue.OldestMessageAgeSeconds

但我必须在没有wmi的情况下这样做。 找到了这样的例子:

Function OldestMessageAgeSeconds(queueFormatName)
       Dim queueInfo
       Set queueInfo = CreateObject("MSMQ.MSMQQueueInfo")
       queueInfo.FormatName = queueFormatName
       Dim queue
       Set queue = queueInfo.Open(32, 0) 'Peek access mode
       If Err.Number > 0 then
              OldestMessageAgeSeconds = 0
       Else
              Dim message
              Set message = queue.PeekCurrent()

              Dim oldestMessageTime
              oldestMessageTime = Now
              Do While Not message Is Nothing
                     If message.ArrivedTime < oldestMessageTime Then
                           oldestMessageTime = message.ArrivedTime
                     End If
                     Set message = queue.PeekNext(False, false, 0)
              Loop

              Dim oldestMessageAge
              oldestMessageAge = DateDiff("s", oldestMessageTime, Now)
              OldestMessageAgeSeconds = oldestMessageAge
       End If
End Function

但由于队列中有大量消息,因此对我来说效果不好。

可能还有另一种方法可以找到最早的消息时代吗?

非常感谢。

0 个答案:

没有答案