最早的消息

Microsoft.MSMQ.6.3.Monitor.Queue.OldestMessage (UnitMonitor)

此监视器检查队列中最早的消息的时间。

Knowledge Base article:

摘要

此监视器检查队列中最早的消息的时间。

配置

默认情况下,此监视器已禁用。 要使其运行,必须使用替代方法来启用此监视器。

可以通过设置以下参数的替代方法来修改此监视器的行为。

IntervalSeconds

执行测试的间隔秒数。 如果此值设置得过低,可能导致 MSMQ 服务超支。 如果此值设置得过高,可能无法适时检测到错误状态。 默认设置为 120 秒(每 2 分钟执行一次测试)。

WarningThresholdValue

应生成警告状态的最早消息的使用时间(以秒为单位)。

ErrorThresholdValue

应生成错误状态的最早消息的使用时间(以秒为单位)。

原因

在正常操作的情况下,将消息添加到队列中时,应用程序应该会及时收到这些消息。 如果消息长时间保留在队列上,则可能表示接收应用程序出现问题,或应用程序无法从队列进行读取。

解决方案

检查队列以及可能会从该队列收到消息的应用程序的连接状态。

Element properties:

TargetMicrosoft.MSMQ.6.3.Queues
Parent MonitorSystem.Health.PerformanceState
CategoryAvailabilityHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.MSMQ.6.3.MonitorType.QueueStatistic.ThreeState
RemotableTrue
AccessibilityPublic
Alert Message
队列中最早的消息的时间超过了阈值。
有关详细信息,请参阅警报上下文。
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.MSMQ.6.3.Monitor.Queue.OldestMessage" Accessibility="Public" Enabled="false" Target="Microsoft.MSMQ.6.3.Queues" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.MSMQ.6.3.MonitorType.QueueStatistic.ThreeState" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.MSMQ.6.3.Monitor.Queue.OldestMessage.AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ExceededErrorThreshold" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="ExceededWarningThreshold" MonitorTypeStateID="WarningState" HealthState="Warning"/>
<OperationalState ID="WithinThreshold" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</ComputerName>
<QueuePath>$Target/Property[Type="Microsoft.MSMQ.6.3.Queue"]/PathName$</QueuePath>
<CounterName>Oldest Message Age</CounterName>
<LogDetail>false</LogDetail>
<WarningThresholdValue>0</WarningThresholdValue>
<ErrorThresholdValue>0</ErrorThresholdValue>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>