Websphere MQ – 在队列中查询长时间的查看消息

我需要一个查询或只是一个命令来查看队列中停止/延迟/等待的消息,但很长一段时间

使用以下命令可以看到正在队列中并且未被处理的消息: –

DISPLAY QSTATUS(q-name) ALL 

首先,您可以看到CURDEPTH值,它非常简单地显示队列中有多less个消息。 这个单一的数字本身并不反映这些消息是在1秒前还是在1小时前到达的,它只是显示了你发出命令时队列中有多less消息。 如果有应用程序正在处理该队列中的消息,那么如果稍后再次发布该消息,则可能会看到不同的数字。

这个命令返回的其他各种字段会显示更多有关消息在处理之前留在队列中的信息。 如果您担心没有应用程序将消息从队列中取出,则应该查看LGETDATELGETTIME ,它们显示最后一条消息从队列中取出的date和时间。 如果这是前一阵子,还值得检查一下IPPROCS ,它显示了打开获取(Input)队列的应用程序的计数。

如果你能看到应用程序正在队列中工作,并且LGETTIME似乎经常发生变化,提示LGETTIME正常的处理,但是你仍然认为你的队列中有很长一段时间的消息,那么你的应用程序可能没有得到下一条消息,而是通过message-id或correlation-idselect特定的消息。 在这种情况下,虽然队列正在被定期处理,但你可能会有一些旧的消息,这些消息在MSGAGE会显示为一个高值。

注意这些字段中的某些字段导致队列pipe理器代码需要额外的时间戳,特别是我提到的LGETTIMEMSGAGE 。 这些是由MONQ属性控制的,所以如果你不想查看这种数据,你不会花这个额外的CPU时间。 通过发出以下命令来打开这些额外的信息:

  ALTER QLOCAL(q-name) MONQ(HIGH) 

相关信息

  • 监视队列
  • 控制实时监控的属性
  • 显示QSTATUS命令参考