WebSphere MQ:消息在输入队列和退出队列之间不断切换
||
逻辑流程是这样的
消息发送到输入队列
调用ProcessorMDB的onMessage()。在此方法中,完成了一些操作/验证
如果出现有害消息(应用程序代码无法处理的消息),则会引发RuntimeException。
这应该回滚事务。我们正在日志文件中看到证据。
有一个使用退出队列名称定义的退出阈值
达到阈值后,邮件将发送到退出队列
但是,它立即开始在输入队列和退出队列之间来回移动。
我们正在使用MQMON工具来观察这种奇怪的行为。即使关闭了运行MDB的应用程序服务器,它也将永远持续下去。
我们正在使用Weblogic 10.3.1和WebSphere MQ 6.02
任何帮助将不胜感激,好像我们用尽了所有想法。
没有找到相关结果
已邀请:
1 个回复
抢垢洛韧
。如果等待时间间隔到期,则应用程序将获得返回码2033,然后在关闭线程之前发出“ 0”。如果由于任何原因该回复消息确实延迟,则ѭ0将无效。但是,如果消息到达并已被撤消并重新排队,则“ 0”将使其留在“撤消队列”中。 确切了解正在发生什么的一种方法是对有问题的队列进行跟踪。您可以使用内置的跟踪功能-strmqtrc-在V7中,该功能比V6版本多一些。但是,如果要非常精细的控制,则可以使用SupportPac MA0W中的跟踪出口。使用MA0W,您可以确切地看到该程序进行的API调用以及代表该程序进行的API调用。 [EDIT]使用PMR中的一些信息更新响应: 以下是来自WMQ V7信息中心的信息: MessageConsumers是会话级别以下的单线程,并且 任何重排毒消息 发生在 工作。这不会影响 应用程序的操作,但是 重新排毒消息时 根据交易或 Client_acknowledge会话, 重新排队动作本身不会 承诺直到当前单位 工作由应用程序提交 代码或(如果适用) 应用程序容器代码。\“ 因此,对于客户来说,获取有毒信息很重要 在他们犯下后立即犯下 退缩,建议他们 要么利用该应用程序 服务器设施 (ConnectionConsumer)可以提交 立即发送消息,或 转移毒药的另一种机制 队列中的消息。 这是V6和V7信息中心中此信息的链接。由于您正在使用V6客户端,因此您需要参考V6信息中心。请注意,对于V6客户端,即使在使用ConnectionConsumer时,ASF的信息中心也没有提到能够立即提交有害消息。按照我的阅读方式,这意味着您可能需要升级到V7客户端才能获得所需的行为。有兴趣查看PMR是否得出类似建议。