MQ消息延迟了几天

时间:2011-03-31 11:28:03

标签: delay message ibm-mq

我们使用IBM WebSphere MQ for SWIFT消息。收到SWIFT消息后,随着处理的进行,它将被处理并放入本地队列。它如下:

外界> Q1>应用> Q2>应用> Q3>应用

队列是本地队列。但是当消息从Q1 / Q2 / Q3到达应用程序时,已经有相当大的延迟......就像几天一样。这种情况随意发生。我们不清楚为什么会这样。大多数消息都很快,但是在3-4天内有一​​些消息迟到了。

所有这些都发生在交易中,我们使用Atomikos作为我们的交易管理器。

以前有人遇到过类似的问题吗?任何帮助表示赞赏。

谢谢, Midhun。

1 个答案:

答案 0 :(得分:1)

有许多方法可以延迟WebSphere MQ消息,诊断可能需要一些小的侦探工作。以下是一些更常见的原因:

  1. 消息停留在同步点下。虽然将消息放在同步点下几天是不寻常的,但我已经看到它发生了。问题是某些应用程序被设计为在单个事务中批量处理多个消息,并且当消息未以批处理多个方式到达时,其余消息将等待另一条消息到达并关闭批处理。 / LI>
  2. 消息停留在同步点下。在另一种情况下,程序逻辑在读取下一条消息之前不会提交同步点。当多个线程正在处理消息时,负载的分配在所有线程中不一定是均匀的,如果负载较轻,则可能缺少消息。
  3. 通过浏览孤立的邮件。在这种情况下,消息的优先级高于当前浏览光标。如果重新扫描间隔设置得非常高并且流量也很高,则可能需要一段时间才能将浏览光标重置为队列顶部。
  4. 程序错误。你没有提到你正在使用哪个版本的WMQ客户端和服务器(希望两者都在7.0!)但偶尔会出现导致线程挂起的问题。这些可以在同步点下绑定一条消息。最好转到latest FixPack for your version并检查名为“修复问题...”的链接,看看APAR是否解决了您的具体问题。如果是,请应用最新的Fix Pack。
  5. 要开始诊断,请使用DIS QSTATUS命令显示队列上的输入和输出句柄数,消息年龄和任何未完成的工作单元。您还可以使用SupportPac MA0W中的出口来获取给定队列上所有API调用的人类可读跟踪。这可能是一个非常有价值的诊断工具,因为您可以确切地知道消息在同步点下的持续时间,是否持续退出和重新读取,API调用使用了哪些选项等。您甚至可以限制跟踪特定队列或特定线程,如果你需要让它运行一段时间,这将有所帮助。