Najstarszy komunikat

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

Ten monitor sprawdza wiek najstarszego komunikatu w kolejce.

Knowledge Base article:

Podsumowanie

Ten monitor sprawdza wiek najstarszego komunikatu w kolejce.

Konfiguracja

Te monitor jest domyślnie wyłączony. W celu umożliwienia działania należy go włączyć przez zastąpienie ustawień.

Zachowanie tego monitora można zmodyfikować przez zastąpienie ustawień następujących parametrów.

IntervalSeconds

Liczba sekund między uruchomieniami testu. Ustawienie zbyt niskiej wartości może spowodować nadmierne obciążenie usługi MSMQ. Natomiast w przypadku ustawienia zbyt wysokiej wartości błąd może nie zostać wykryty w odpowiednim czasie. Ustawieniem domyślnym jest 120 sekund (co oznacza uruchamianie testu raz na 2 minuty).

WarningThresholdValue

Wiek najstarszego komunikatu (w sekundach), przy którym powinien zostać wygenerowany stan ostrzegawczy.

ErrorThresholdValue

Wiek najstarszego komunikatu (w sekundach), przy którym powinien zostać wygenerowany stan błędu.

Przyczyny

W przypadku normalnego działania aplikacje powinny odbierać komunikaty natychmiast po ich dodaniu do kolejki. Jeśli komunikat pozostaje w kolejce przez dłuższy czas, może to oznaczać problem z aplikacją odbierającą lub jej możliwością odczytu informacji z kolejki.

Rozwiązania

Sprawdź stan połączenia kolejki oraz aplikacji mogących odbierać komunikaty z tej kolejki.

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
Wiek najstarszego komunikatu w kolejce przekroczył próg.
Szczegóły można znaleźć w kontekście alertu.
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>