MQDH 概觀

可用性: AIX®HP-UXIBM® iSolarisLinux®Windows,以及連接至這些系統的 IBM MQ 用戶端。

目的:MQDH 結構說明當訊息是傳輸佇列上儲存的配送清單訊息時,訊息中所呈現的其他資料。 配送清單訊息是傳送至多個目的地佇列的訊息。 其他資料包含 MQDH 結構,後面接著 MQOR 記錄陣列及 MQPMR 記錄陣列。

此結構是由將訊息直接放置在傳輸佇列上,或從傳輸佇列中移除訊息 (例如: 訊息通道代理程式) 的特殊化應用程式所使用。

要將訊息放入配送清單的應用程式不得使用此結構。 相反地,它們必須使用 MQOD 結構來定義配送清單中的目的地,並使用 MQPMO 結構來指定訊息內容或接收傳送至個別目的地之訊息的相關資訊。

格式名稱:MQFMT_DIST_HEADER。

字集及編碼:MQDH 中的資料必須採用 CodedCharSetId 佇列管理程式屬性所提供的字集,以及 MQENC_NATIVE 所提供本端佇列管理程式的編碼。

在下列欄位中,將 MQDH 的字集及編碼設為 CodedCharSetIdEncoding 欄位:
  • MQMD (如果 MQDH 結構是在訊息資料的開頭) ,或
  • MQDH 結構之前的標頭結構 (所有其他觀察值)。
用法: 當應用程式將訊息放入配送清單,且部分或所有目的地位於遠端時,佇列管理程式會以 MQXQH 及 MQDH 結構作為應用程式訊息資料的字首,並將訊息放置在相關傳輸佇列上。 因此,當訊息位於傳輸佇列時,資料會以下列順序出現:
  • MQXQH 結構
  • MQDH 結構加上 MQOR 及 MQPMR 記錄的陣列
  • 應用程式訊息資料

視目的地而定,佇列管理程式可以產生多個這類訊息,並將它放在不同的傳輸佇列上。 在此情況下,那些訊息中的 MQDH 結構會識別應用程式所開啟的配送清單所定義目的地的不同子集。

將配送清單訊息直接放置在傳輸佇列上的應用程式必須符合先前說明的順序,且必須確保 MQDH 結構正確。 如果 MQDH 結構無效,佇列管理程式可能會使 MQPUT 或 MQPUT1 呼叫失敗,原因碼為 MQRC_DH_ERROR。

只有在您已定義佇列能夠支援配送清單訊息 (請參閱 佇列屬性 中說明的 DistLists 佇列屬性) 時,才能以配送清單格式將訊息儲存在佇列中。 如果應用程式將配送清單訊息直接放置在不支援配送清單的佇列上,則佇列管理程式會將配送清單訊息分割成個別訊息,並改為將配送清單訊息放置在佇列上。