キューで最も古いメッセージの年齢を取得する必要があります。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
しかし、キューに大量のメッセージがあるため、うまく機能しません。
最も古いメッセージの年齢を見つける別の方法があるかもしれませんか?
どうもありがとう。