Weblogic MDB instances becomes zero and messages in the Queue are not picked up
I have a MDB reading from a MQ Queue through local binding. Sometimes we notice that the messages from the MQ Queue is not picked up Queue depth increases to 50000 and the number of instances become zero. Total number of execute threads is 25. There are 8 managed servers in a physical machine开发者_StackOverflow社区.
That sounds like a poison message problem. If a message in the queue cannot be delivered (for example invalid headers or unknown format) then the WMQ JMS classes will try to requeue it. First, they will look for a value in the BOQNAME and BOQTHRESH attributes of the queue. If these are present the message will be placed on the queue named in BOQNAME once the backout count exceeds BOQTHRESH. If there are problems requeuing to this queue then the message will be placed on the Dead Letter Queue. If this cannot be completed, the MDB stops receiving messages.
There are several possible problems with requeueing messages:
- The BOQNAME queue or DLQ does not exist
- The requeue destination queue exists but the ID consuming messages has no authority to it
- The requeue destination queue is full
- No value in BOQNAME or BOQTHRESH
If you do not already have a backout queue defined, define one and place its name in the BOQNAME attribute of the input queue. Next, place a value (often "10" is used) in the BOQTHRESH attribute of the input queue. Make sure the application consuming messages is authorized to the new backout queue and restart the application after making these changes. If the issue is a poison message, you should now see the poison message landing in the backout queue and the primary input queue should then drain normally.
精彩评论