我需要一个查询或只是一个命令来查看队列中停止/延迟/等待的消息,但需要很长时间。
答案1
可以使用以下命令查看位于队列中且未被处理的消息:-
DISPLAY QSTATUS(q-name) ALL
首先,您可以看到一个CURDEPTH
值,它非常简单地显示了队列中有多少条消息。这个数字本身并不反映这些消息是 1 秒前还是 1 小时前到达的,它只是显示了您发出命令时队列中有多少条消息。如果有应用程序正在处理该队列中的消息,那么如果您稍后再次发出该命令,您可能会看到不同的数字。
此命令返回的其他字段将向您显示有关消息在被处理之前在此队列中停留多长时间的更多信息。如果您担心没有应用程序从队列中获取消息,则应检查LGETDATE
并LGETTIME
显示最后一条消息从队列中获取的日期和时间。如果这是一段时间之前,还值得检查显示IPPROCS
队列打开以供获取的应用程序数量(输入)。
如果您看到应用程序正在处理队列,并且队列LGETTIME
似乎在定期变化,表明正在发生定期处理,但您仍然认为队列中已有很长时间的消息,则可能是应用程序没有获取下一条消息,而是通过消息 ID 或相关性 ID 拾取特定消息。在这种情况下,尽管正在定期处理队列,但您可能有一些旧消息,这些消息将显示为较高的值MSGAGE
。
注意:其中一些字段导致队列管理器代码获取额外的时间戳,特别是我提到的那些,LGETTIME
和MSGAGE
。这些由属性控制MONQ
,因此如果您不想查看此类数据,则不会花费额外的 CPU 时间。通过发出以下命令打开这些额外的信息:-
ALTER QLOCAL(q-name) MONQ(HIGH)
相关信息: