0

キューで最も古いメッセージの年齢を取得する必要があります。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

しかし、キューに大量のメッセージがあるため、うまく機能しません。

最も古いメッセージの年齢を見つける別の方法があるかもしれませんか?

どうもありがとう。

4

0 に答える 0