如何在 IBM MQ 的持久订阅者中获取消息计数?
How to Get message count in a durable subscriber in IBM MQ?
我正在使用默认的 IBM mq 主题 'dev/' 并且有一个持久订阅者附加到该主题。
如果我生成一些消息但不使用它们,则使用 JMS 生产者客户端,它们将保存在持久客户端的订阅中。
所以我想使用 MQSC 命令检查该订阅的消息计数,我可以在订阅状态下使用 MQ Explorer 检查它,但我想使用 MQSC 通过命令行检查它。到目前为止我有
DISPLAY SUB('JMS:QM1:LOCALDB.vanshaj.pump_fs_ns_Pump:LOCALDB.vanshaj.pump_fs_ns_Pump') ALL
但这只显示以下属性
AMQ8096I: IBM MQ subscription inquired.
SUBID(414D5120514D31202020202020202020CDBBF261053D4321)
SUB(JMS:QM1:LOCALDB.vanshaj.pump_fs_ns_Pump:LOCALDB.vanshaj.pump_fs_ns_Pump)
TOPICSTR(dev/) TOPICOBJ( )
DISTYPE(RESOLVED)
DEST(SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04)
DESTQMGR(QM1) PUBAPPID( )
SELECTOR( ) SELTYPE(NONE)
USERDATA( )
PUBACCT(0000000000000000000000000000000000000000000000000000000000000000)
DESTCORL(414D5120514D31202020202020202020CDBBF261053D4321)
DESTCLAS(MANAGED) DURABLE(YES)
EXPIRY(UNLIMITED) PSPROP(MSGPROP)
PUBPRTY(ASPUB) REQONLY(NO)
SUBSCOPE(ALL) SUBLEVEL(1)
SUBTYPE(API) VARUSER(ANY)
WSCHEMA(TOPIC) SUBUSER(app)
CRDATE(2022-01-28) CRTIME(12:11:30)
ALTDATE(2022-01-28) ALTTIME(12:14:14)
我需要的是消息数,如下图所示
有两个查看订阅的命令,类似于许多其他 IBM MQ 资源。
DISPLAY SUB
查看静态配置
DISPLAY SBSTATUS
查看实时 run-time 状态 号码。
在后一个命令中,您将找到屏幕截图中显示的 订阅状态 详细信息。
AMQ8099I: IBM MQ subscription status inquired.
SUB(ABC.1)
SUBID(414D51204D51473120202020202020207E20475E2237A83F)
SUBUSER(mqgusr1) RESMDATE( )
RESMTIME( ) LMSGDATE( )
LMSGTIME( )
ACTCONN(000000000000000000000000000000000000000000000000)
DURABLE(YES) MCASTREL( , )
NUMMSGS(0) SUBTYPE(ADMIN)
TOPICSTR(xx/yy/zz)
如果您想查看有多少消息已传递给订阅者,但尚未被应用程序使用,那么您应该针对 DISPLAY SUB() DEST
属性中列出的队列名称发出以下命令.
DISPLAY QLOCAL(SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04) CURDEPTH
每个 IBM MQ 订阅都与一个用于保存消息的队列相关联。队列显示在订阅的 DEST
字段中。在您的示例中,队列名称是 SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04
.
如果您想查看未使用消息的数量,您需要显示与订阅关联的队列的 CURDEPTH
,例如:
DIS QLOCAL(SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04) CURDEPTH
输出将如下所示:
AMQ8409I: Display Queue details.
QUEUE(SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04)
TYPE(QLOCAL) CURDEPTH(128)
IBM MQ 托管订阅(所有 JMS 订阅都是托管的,因为您无法指定要使用的自己的队列)将具有以下格式的名称:
对于非持久订阅:
SYSTEM.MANAGED.NDURABLE.*
对于持久订阅:
SYSTEM.MANAGED.DURABLE.*
如果您对所有具有未使用消息的托管订阅感兴趣,您可以使用此命令:
DIS QLOCAL(SYSTEM.MANAGED.*) WHERE(CURDEPTH GT 0)
我正在使用默认的 IBM mq 主题 'dev/' 并且有一个持久订阅者附加到该主题。 如果我生成一些消息但不使用它们,则使用 JMS 生产者客户端,它们将保存在持久客户端的订阅中。
所以我想使用 MQSC 命令检查该订阅的消息计数,我可以在订阅状态下使用 MQ Explorer 检查它,但我想使用 MQSC 通过命令行检查它。到目前为止我有
DISPLAY SUB('JMS:QM1:LOCALDB.vanshaj.pump_fs_ns_Pump:LOCALDB.vanshaj.pump_fs_ns_Pump') ALL
但这只显示以下属性
AMQ8096I: IBM MQ subscription inquired.
SUBID(414D5120514D31202020202020202020CDBBF261053D4321)
SUB(JMS:QM1:LOCALDB.vanshaj.pump_fs_ns_Pump:LOCALDB.vanshaj.pump_fs_ns_Pump)
TOPICSTR(dev/) TOPICOBJ( )
DISTYPE(RESOLVED)
DEST(SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04)
DESTQMGR(QM1) PUBAPPID( )
SELECTOR( ) SELTYPE(NONE)
USERDATA( )
PUBACCT(0000000000000000000000000000000000000000000000000000000000000000)
DESTCORL(414D5120514D31202020202020202020CDBBF261053D4321)
DESTCLAS(MANAGED) DURABLE(YES)
EXPIRY(UNLIMITED) PSPROP(MSGPROP)
PUBPRTY(ASPUB) REQONLY(NO)
SUBSCOPE(ALL) SUBLEVEL(1)
SUBTYPE(API) VARUSER(ANY)
WSCHEMA(TOPIC) SUBUSER(app)
CRDATE(2022-01-28) CRTIME(12:11:30)
ALTDATE(2022-01-28) ALTTIME(12:14:14)
我需要的是消息数,如下图所示
有两个查看订阅的命令,类似于许多其他 IBM MQ 资源。
DISPLAY SUB
查看静态配置
DISPLAY SBSTATUS
查看实时 run-time 状态 号码。
在后一个命令中,您将找到屏幕截图中显示的 订阅状态 详细信息。
AMQ8099I: IBM MQ subscription status inquired.
SUB(ABC.1)
SUBID(414D51204D51473120202020202020207E20475E2237A83F)
SUBUSER(mqgusr1) RESMDATE( )
RESMTIME( ) LMSGDATE( )
LMSGTIME( )
ACTCONN(000000000000000000000000000000000000000000000000)
DURABLE(YES) MCASTREL( , )
NUMMSGS(0) SUBTYPE(ADMIN)
TOPICSTR(xx/yy/zz)
如果您想查看有多少消息已传递给订阅者,但尚未被应用程序使用,那么您应该针对 DISPLAY SUB() DEST
属性中列出的队列名称发出以下命令.
DISPLAY QLOCAL(SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04) CURDEPTH
每个 IBM MQ 订阅都与一个用于保存消息的队列相关联。队列显示在订阅的 DEST
字段中。在您的示例中,队列名称是 SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04
.
如果您想查看未使用消息的数量,您需要显示与订阅关联的队列的 CURDEPTH
,例如:
DIS QLOCAL(SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04) CURDEPTH
输出将如下所示:
AMQ8409I: Display Queue details.
QUEUE(SYSTEM.MANAGED.DURABLE.61F2BBCD21433D04)
TYPE(QLOCAL) CURDEPTH(128)
IBM MQ 托管订阅(所有 JMS 订阅都是托管的,因为您无法指定要使用的自己的队列)将具有以下格式的名称:
对于非持久订阅:
SYSTEM.MANAGED.NDURABLE.*
对于持久订阅:
SYSTEM.MANAGED.DURABLE.*
如果您对所有具有未使用消息的托管订阅感兴趣,您可以使用此命令:
DIS QLOCAL(SYSTEM.MANAGED.*) WHERE(CURDEPTH GT 0)