Storage quota exceeded for MSMQ queue. No more messages can be stored in the queue.

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

Knowledge Base article:

Summary

Storage quota exceeded for MSMQ queue. No more messages can be stored in the queue.

Causes

A Message Queuing queue quota has been reached.

Resolutions

Reduce the outstanding message count

To resolve this issue:

To avoid this problem in the future, the sending application should request negative acknowledgements (NACK) from the computer to which it is sending messages. If a NACK is returned to the sending application and it indicates that the quota for the destination queue or computer has been reached, the sending application can either stop sending messages or offload the messages to another destination. Nacks and Acks are requested programmatically by the sender. For more information, see Reliable Messaging with MSMQ and .NET ( http://go.microsoft.com/fwlink/?LinkID=95381).

You can use the perfmon command-line tool to monitor various data points related to the incoming and outgoing messages in Message Queuing.

To perform this procedure, you must have membership in Administrators, or you must have been delegated the appropriate authority.

To use perfmon to monitor data:

Additional

For more information, see Event ID 2182 ( http://technet.microsoft.com/en-us/library/dd337533(WS.10).aspx)

Element properties:

TargetMicrosoft.MSMQ.6.2.Servers
CategoryAvailabilityHealth
EnabledFalse
Event_ID2182
Event Source$Target/Property[Type="Microsoft.MSMQ.6.2.ServerRole"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Storage quota exceeded for MSMQ queue. No more messages can be stored in the queue.
Event Description: {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.6.2.Rule.Alert.Event2182" Enabled="false" Target="Microsoft.MSMQ.6.2.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">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="Microsoft.MSMQ.6.2.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.6.2.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>