停用的訊息佇列 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 停用的訊息佇列處理標準實體目標特性的方式
代理程式可以將整個訊息放入停用的訊息佇列中,或是捨棄訊息內文的內容,只保留標頭和特性資料。依預設,停用的訊息佇列儲存整個訊息。
若想要降低停用的訊息佇列容量,且不打算復原停用的訊息,請考慮將 imq.destination.DMQ.truncateBody 代理程式特性設為 true:
imqcmd update bkr -o imq.destination.DMQ.truncateBody=true
如此將會捨棄訊息本文,而只保留標頭與特性資料。
依預設,不記錄停用的訊息。啟用停用的訊息之記錄功能,可讓代理程式記錄下列事件:
代理程式將訊息移至停用的訊息佇列
代理程式捨棄來自停用的訊息佇列之訊息,以及不使用停用的訊息佇列之任何實體目標的訊息
實體目標達其上限
下列指令會啟用停用的訊息之記錄功能:
imqcmd update bkr -o imq.destination.logDeadMsgs=true
停用的訊息之記錄功能套用於所有使用停用的訊息佇列的實體目標。您不能啟用或停用個別實體目標的記錄功能。