我需要在队列中获得最早的消息年龄。 在使用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
但由于队列中有大量消息,因此对我来说效果不好。
可能还有另一种方法可以找到最早的消息时代吗?
非常感谢。