Weblogic MDB 实例变为零并且队列中的消息未被拾取
我有一个 MDB 通过本地绑定从 MQ 队列读取。有时我们会注意到来自 MQ 队列的消息没有被拾取队列深度增加到 50000 并且实例数量变为零。执行线程总数为25。一台物理机中有8台托管服务器。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这听起来像是有毒消息问题。如果队列中的消息无法传送(例如无效标头或未知格式),则 WMQ JMS 类将尝试将其重新排队。首先,他们将在队列的 BOQNAME 和 BOQTHRESH 属性中查找值。如果存在这些,一旦回退计数超过 BOQTHRESH,消息将被放置在 BOQNAME 中指定的队列中。如果重新排队到此队列时出现问题,则消息将被放置在死信队列中。如果无法完成此操作,MDB 将停止接收消息。
重新排队消息可能会出现几个问题:
如果您还没有定义一个回退队列,定义一个并将其名称放入输入队列的 BOQNAME 属性中。接下来,在输入队列的 BOQTHRESH 属性中放置一个值(通常使用“10”)。确保使用消息的应用程序被授权使用新的回退队列,并在进行这些更改后重新启动应用程序。如果问题是有害消息,您现在应该会看到有害消息落在回退队列中,然后主输入队列应该正常排出。
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:
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.