MQ 消息延迟数天
我们使用 IBM WebSphere MQ 来处理 SWIFT 消息。收到 SWIFT 消息后,系统会对其进行处理并随着处理的进行将其放入本地队列中。如下:
外面的世界> Q1>应用程序> Q2>应用程序> Q3>应用程序
队列是本地队列。但是,当消息从第一季度/第二季度/第三季度到达应用程序时,出现了相当大的延迟……比如几天。而这种情况的发生是任意的。我们不知道为什么会发生这种情况。大多数消息都很快就能收到,但也有一些消息会在 3-4 天内到达,但会延迟到达。
所有这一切都发生在一个事务中,我们使用 Atomikos 作为我们的事务管理器。
以前有人遇到过类似的问题吗?任何帮助表示赞赏。
谢谢, 米敦。
We use IBM WebSphere MQ for SWIFT messages. When a SWIFT message is received, it is processed and put into Local Queues as the processing goes on. Its like the follows :
Outside World > Q1 > App > Q2 > App > Q3 > App
The queues are local queues. But there has been considerable delay when the message reaches the Application from Q1/Q2/Q3 ... like days. And this happens arbitrarily. We have no clue as to why this is happening. Most of the messages get thru pretty quick but there are a couple of them in 3-4 days which arrive late.
All this happens in a transaction and we use Atomikos as our Transaction Manager.
Has anybody faced a similar issue before ? Any help is appreciated.
Thanks,
Midhun.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有多种方法可以延迟 WebSphere MQ 消息,并且诊断可能需要一些侦探工作。以下是一些更常见的原因:
要开始诊断此问题,请使用 DIS QSTATUS 命令显示队列上的输入和输出句柄数、消息期限以及任何未完成的工作单元。您还可以使用 SupportPac MA0W 中的退出来获取给定队列上所有 API 调用的人类可读跟踪。这可能是一个非常有价值的诊断工具,因为您可以准确地知道消息在同步点下停留了多长时间,是否连续回退并重新读取,API 调用使用哪些选项等。您甚至可以限制跟踪到特定的队列或特定的线程,如果您需要让它运行一段时间,这会很有帮助。
There are a number of ways in which WebSphere MQ messages can be delayed and diagnosing may take a little detective work. Here are a few of the more common causes:
To start diagnosing this, use the
DIS QSTATUS
command to display the number of input and output handles on the queue, the message age and any outstanding units of work. You can also use the exit in SupportPac MA0W to get a human-readable trace of all API calls on a given queue. This can be an extremely valuable diagnostic tool because you can tell exactly how long a message sat under syncpoint, whether it is being continuously backed out and re-read, what options are used for the API call, etc. You can even limit the trace to specific queues or specific threads which is helpful if you need to let it run for a while.