Sun Java System Message Queue 3.7 UR1 管理指南

使用停用消息队列

停用消息队列 mq.sys.dmq 是系统创建的物理目的地,它保存代理的停用消息及其他物理目的地。 停用消息队列是一个工具,用于监视、调整系统效率以及故障排除。有关术语“停用消息”的定义以及停用消息队列的更详细介绍,请参见 Message Queue 技术概述

代理在启动时会自动创建停用消息队列。如果代理无法处理消息或者消息的有效期到期,则代理会将消息放入该队列中。另外,其他物理目的地也可以使用停用消息队列来保存丢弃的消息。通过使用停用消息队列,可以提供有利于排除系统故障的信息。

配置停用消息队列的使用

默认情况下,物理目的地配置为使用停用消息队列。可以通过设置物理目的地属性 useDMQ 来禁止或允许物理目的地使用停用消息队列。

下面的示例创建一个名为 myDist 的队列,该队列在默认情况下使用停用消息队列:

imqcmd create dst -n myDist -t q

下面的示例禁止上述队列使用停用消息队列:

imqcmd update dst -n myDist -t q -o useDMQ=false

通过设置 imq.autocreate.destination.useDMQ 代理属性,可以允许或禁止代理中所有自动创建的物理目的地使用停用消息队列。

管理停用消息队列

可以使用 Message Queue 命令实用程序 (imqcmd) 像管理其他队列那样来管理停用消息队列,但有一些不同之处。 例如,由于停用消息队列是系统创建的,因此您不能创建、暂停或销毁它。另外,如表 6–3 中所示,停用消息队列的默认值有时与普通队列的默认值不同。

停用消息队列属性

配置停用消息队列与配置其他队列相似,但某些物理目的地属性不应用默认值或具有不同的默认值。表 6–3 列出了停用消息队列以独特方式处理的队列属性。

表 6–3 标准物理目的地属性的停用消息队列处理

属性 

停用消息队列的独特处理 

limitBehavior

停用消息队列的默认值为 REMOVE_OLDEST。(其他队列的默认值为 REJECT_NEWEST)停用消息队列不支持流控制。

localDeliveryPreferred

不适用于停用消息队列。 

maxNumMsgs

停用消息队列的默认值为 1000。对于其他队列,默认值为 -1(无限制)。

maxNumProducers

不适用于停用消息队列。 

maxTotalMsgBytes

对于停用消息队列,默认值为 10 MB。对于其他队列,默认值为 -1(无限制)。

isLocalOnly

在代理群集中,停用消息队列始终是全局物理目的地,此属性永久性地设置为 false

消息内容

代理可以将完整的消息放入停用消息队列中,也可以丢弃消息主体内容,而只保留标题和属性数据。默认情况下,停用消息队列存储完整的消息。

如果要减小停用消息队列的大小并且不打算恢复停用消息,请考虑将 imq.destination.DMQ.truncateBody 代理属性设置为 true

imqcmd update bkr -o imq.destination.DMQ.truncateBody=true

这将丢弃消息主体,而只保留标题和属性数据。

启用停用消息日志记录

默认情况下将禁用停用消息日志记录。启用停用消息日志记录使代理可以记录以下事件:

以下命令启用停用消息日志记录:

imqcmd update bkr -o imq.destination.logDeadMsgs=true

停用消息日志记录适用于使用停用消息队列的所有物理目的地。不能对单个物理目的地启用或禁用日志记录。