Przekroczono limit przydziału kolejki usługi MSMQ. W kolejce nie można zapisać więcej komunikatów.

Microsoft.MSMQ.10.0.Rule.Alert.Event2182 (Rule)

Knowledge Base article:

Podsumowanie

Przekroczono limit przydziału kolejki usługi MSMQ. W kolejce nie można zapisać więcej komunikatów.

Przyczyny

Osiągnięto limit przydziału kolejki usługi kolejkowania komunikatów.

Rozwiązania

Zmniejsz liczbę komunikatów oczekujących

Aby rozwiązać ten problem:

Aby uniknąć tego problemu w przyszłości, aplikacja wysyłająca powinna żądać potwierdzeń negatywnych (NACK) z komputera, do którego wysyła komunikaty. Gdy do aplikacji wysyłającej zostanie zwrócony komunikat NACK informujący o osiągnięciu limitu przydziału docelowej kolejki lub komputera, aplikacja może przestać wysyłać komunikaty lub wybrać dla nich inne miejsce docelowe, aby nie obciążać dotychczasowego adresata. Potwierdzeń NACK i ACK żąda programowo nadawca. Aby uzyskać więcej informacji, zobacz artykuł Reliable Messaging with MSMQ and .NET (Niezawodna komunikacja przy użyciu usługi MSMQ i platformy .NET) ( http://go.microsoft.com/fwlink/?LinkID=95381).

Przy użyciu narzędzia wiersza polecenia perfmon można monitorować różne dane dotyczące komunikatów przychodzących i wychodzących usługi kolejkowania komunikatów.

W celu wykonania tej procedury musisz być członkiem grupy Administratorzy lub otrzymać odpowiednie uprawnienie.

Aby użyć programu perfmon do monitorowania danych:

Dodatkowe informacje

Więcej informacji znajduje się w artykule dotyczącym zdarzenia o identyfikatorze 2182 ( http://technet.microsoft.com/en-us/library/dd337533(WS.10).aspx)

Element properties:

TargetMicrosoft.MSMQ.10.0.Servers
CategoryAvailabilityHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Przekroczono limit przydziału kolejki usługi MSMQ. W kolejce nie można zapisać więcej komunikatów.
Opis zdarzenia: {0}
Event LogApplication

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
Alert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.MSMQ.10.0.Rule.Alert.Event2182" Enabled="false" Target="Microsoft.MSMQ.10.0.Servers" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>AvailabilityHealth</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">2182</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">EventSourceName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="Microsoft.MSMQ.10.0.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="Alert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertName/>
<AlertDescription/>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.MSMQ.10.0.Rule.Alert.Event2182.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
<Custom1/>
<Custom2/>
<Custom3/>
<Custom4/>
<Custom5/>
<Custom6/>
<Custom7/>
<Custom8/>
<Custom9/>
<Custom10/>
</WriteAction>
</WriteActions>
</Rule>