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

停用的訊息之記錄功能套用於所有使用停用的訊息佇列的實體目標。您不能啟用或停用個別實體目標的記錄功能。