The backout queue feature that is included with IBM WebSphere MQ is a local queue that is used to store poison messages. Poison messages are MQ messages that cannot be processed and that are repeatedly returned to the message queue. If poison messages are not deleted from the message queue, they could lead to deadlocks that may affect application performance.
The IBM WebSphere MQ queue manager keeps a record of the number of times that each message is backed out. When the number reaches a configured backout threshold, the message can be moved to a backout queue. MQ does not automatically move poison messages. It is the responsibility of the program to move them to a backout queue. An MQ application at the transport layer can query the backout count and decide what to do with the message. For example:
- If the backout count is less than the configured threshold, the backout queue feature can process the message and then pass it up to the application.
- If the backout count reaches the configured threshold, the backout queue feature can move the message to the backout queue.
- The backout queue feature can take some other action.
Software update information
A supported feature that changes the product's default behavior is now available from Microsoft. However, this feature is intended to change only the behavior that this article describes. Apply it only to systems that specifically require it. This feature may receive additional testing. Therefore, if your system is not severely affected by the lack of this feature, we recommend that you wait for the next Host Integration Server 2010 service pack that contains this feature.
To obtain this feature immediately, contact Microsoft Customer Support Services. For a complete list of Microsoft Customer Support Services telephone numbers and information about support costs, visit the following Microsoft website:
File information
The English (United States) version of this hotfix uses a Microsoft Windows Installer package to install the hotfix. The dates and the times for these files are listed in Coordinated Universal Time (UTC) in the following table. When you view the file information, the date is converted to local time. To find the difference between UTC and local time, use the
Time Zone tab in the Date and Time item in Control Panel.
For Microsoft Host Integration Server 2010 32-bit edition
File name | File version | File size | Date | Time | Platform |
---|
System.servicemodel.channels.webspheremq.baseclient.dll | 8.5.4264.2 | 177,072 | 03-Feb-2011 | 23:30 | x86 |
System.servicemodel.channels.webspheremq.channel.dll | 8.5.4264.2 | 119,720 | 03-Feb-2011 | 23:30 | x86 |
System.servicemodel.channels.webspheremq.extendedclient.dll | 8.5.4264.2 | 177,080 | 03-Feb-2011 | 23:30 | x86 |
System.servicemodel.channels.webspheremq.server.dll | 8.5.4264.2 | 177,056 | 03-Feb-2011 | 23:30 | x86 |
For Microsoft Host Integration Server 2010 64-bit edition
File name | File version | File size | Date | Time | Platform |
---|
System.servicemodel.channels.webspheremq.baseclient.dll | 8.5.4264.2 | 177,072 | 03-Feb-2011 | 23:34 | x86 |
System.servicemodel.channels.webspheremq.channel.dll | 8.5.4264.2 | 119,720 | 03-Feb-2011 | 23:34 | x86 |
System.servicemodel.channels.webspheremq.extendedclient.dll | 8.5.4264.2 | 177,080 | 03-Feb-2011 | 23:34 | x86 |
System.servicemodel.channels.webspheremq.server.dll | 8.5.4264.2 | 177,056 | 03-Feb-2011 | 23:34 | x86 |
System.servicemodel.channels.webspheremq.baseclient.dll | 8.5.4264.2 | 204,720 | 03-Feb-2011 | 23:34 | x64 |
System.servicemodel.channels.webspheremq.channel.dll | 8.5.4264.2 | 119,720 | 03-Feb-2011 | 23:34 | x86 |
System.servicemodel.channels.webspheremq.extendedclient.dll | 8.5.4264.2 | 204,728 | 03-Feb-2011 | 23:34 | x64 |
System.servicemodel.channels.webspheremq.server.dll | 8.5.4264.2 | 204,704 | 03-Feb-2011 | 23:34 | x64 |
After you apply the update, the WCF Channel for Websphere MQ can be configured to use a backout queue feature by setting the new
MoveMessageToBackoutQueue binding property to True.
The backout queue feature is supported only on a receive (get) operation and only when transactions are enabled. Also, the backout queue cannot be used in combination with
ReceiveContext.
If the
MoveMessageToBackoutQueue property is set to True, and if the Transaction and SyncPoint properties are True, the following process will occur during an MQGet operation:
- The backout count is checked, and if it is nonzero, it is compared to the backout threshold that is defined on the message queue.
- If the backout count is less than the backout threshold, the message is sent to the WCF application to be processed. If, for some reason, the transaction is not committed, the message is rolled back, and the MQ Manager increments the message backout count. Additionally, the cycle continues until the message is committed successfully or until the backout count becomes greater than the backout threshold.
- If the backout count is greater than the threshold, the MQ Manager is queried, the message is written to the queue that is specified in the BOQNAME parameter, and then the message is committed. Frequently a Dead Letter Header (MQDLH) is attached to the message to indicate why the message was written to the backout queue.
Note MQ applications use the name BOQNAME for the backout queue that is used for write messages that were backed out.
If the Dead Letter binding property, the
MoveMessageToBackoutQueue property, and the Transaction and SyncPoint properties are all set to True, the following process will occur during an MQGet operation:
- The backout count is checked, and if it is nonzero, it is compared to the backout threshold that is defined on the message queue.
- If the backout count is less than the backout threshold, the dead letter process is used. If the message cannot be processed, the message is written to the Dead Letter Queue.
- If the message can be processed, it is sent to the WCF application to be processed. If the transaction is not committed, the message is rolled back, and the MQ Manager increments the message backout count. Then, the cycle continues until the message is committed successfully or until the backout count becomes greater than the backout threshold.
- If the backout count is greater than the backout threshold, the MQ Manager is queried, the message is written to the queue that is specified in the BOQNAME parameter, and then the message is committed. Frequently a Dead Letter Header (MQDLH) is attached to the message to indicate why the message was written to the backout queue.