訊息的內容
Message 物件內容的概觀,以及指向更詳細參照資訊的鏈結。
| 內容名稱 | 說明 |
|---|---|
| JMS_IBM_CHARACTER_SET | 當 XMS 用戶端將訊息轉遞至其預期目的地時,訊息內文中的字元資料字串所使用的編碼字集 (或字碼頁) ID (CCSID)。 在 XMS中,此內容具有數值並對映至 CCSID。 不過,此內容是以 JMS 內容為基礎,因此具有字串類型值,並對映至代表此數值 CCSID 的 Java 字集。 |
| JMS_IBM_Encoding | 當 XMS 用戶端將訊息轉遞至其預期目的地時,訊息內文中的數值資料如何呈現。 |
| JMS_IBM_EXCEPTIONMESSAGE | 用來說明訊息傳送至異常目的地的原因的文字。 這是唯讀內容。 |
| JMS_IBM_EXCEPTIONPROBLEMDESTINATION | 訊息傳送至異常目的地之前訊息所在目的地的名稱。 |
| JMS_IBM_EXCEPTIONREASON | 用來說明訊息傳送至異常目的地的原因的原因碼。 |
| JMS_IBM_EXCEPTIONTIMESTAMP | 訊息傳送至異常目的地的時間。 |
| JMS_IBM_FEEDBACK | 指出報告訊息本質的代碼。 |
| JMS_IBM_FORMAT | 訊息中應用程式資料的本質。 |
| JMS_IBM_LAST_MSG_IN_GROUP | 指出訊息是否為訊息群組中的最後一則訊息。 |
| JMS_IBM_MSGTYPE | 訊息的類型。 |
| JMS_IBM_PUTAPPLTYPE | 傳送訊息的應用程式類型。 |
| JMS_IBM_PUTDATE | 傳送訊息的日期。 |
| JMS_IBM_PUTTIME | 傳送訊息的時間。 |
| JMS_IBM_REPORT_COA | 要求「到達時確認」報告訊息,指定必須將原始訊息中的多少應用程式資料併入到報告訊息中。 |
| JMS_IBM_REPORT_COD | 要求「遞送時確認」報告訊息,指定必須將原始訊息中的多少應用程式資料併入到報告訊息中。 |
| JMS_IBM_REPORT_DISCARD_MSG | 要求在訊息無法遞送至其預期目的地的情況下捨棄訊息。 |
| JMS_IBM_REPORT_EXCEPTION | 要求異常狀況報告訊息,指定必須將原始訊息中的多少應用程式資料併入到報告訊息中。 |
| JMS_IBM_REPORT_EXPIRATION | 要求有效期限報告訊息,指定必須將原始訊息中的多少應用程式資料併入到報告訊息中。 |
| JMS_IBM_REPORT_NAN | 要求負面動作通知報告訊息。 |
| JMS_IBM_REPORT_PAN | 要求正面動作通知報告訊息。 |
| JMS_IBM_REPORT_PASS_CORREL_ID | 要求任何報告或回覆訊息的相關性 ID 與原始訊息的相關性 ID 相同。 |
| JMS_IBM_REPORT_PASS_MSG_ID | 要求任何報告或回覆訊息的訊息 ID 與原始訊息的訊息 ID 相同。 |
| JMS_IBM_RETAIN | 設定此內容會向佇列管理程式指出如何將訊息作為保留的發佈資訊加以處理。 |
| JMS_IBM_SYSTEM_MESSAGEID | 在服務整合匯流排中唯一識別訊息的 ID。 這是唯讀內容。 |
| JMSX_APPID | 傳送訊息的應用程式名稱。 |
| JMSX_DELIVERY_COUNT | 嘗試遞送訊息的次數。 |
| JMSX_GROUPID | 訊息所屬的訊息群組的 ID。 |
| JMSX_GROUPSEQ | 訊息群組內訊息的序號。 |
| JMSX_USERID | 與傳送訊息的應用程式相關聯的使用者 ID。 |
JMS_IBM_MQMD* 內容
IBM® Message Service Client for .NET 可讓用戶端應用程式使用 API 讀取/寫入 MQMD 欄位。 它也容許存取 MQ 訊息資料。 依預設會停用 MQMD 的存取權,且應用程式必須使用「目的地」內容 XMSC_WMQ_MQMD_WRITE_ENABLED 及 XMSC_WMQ_MQMD_READ_ENABLED 來明確啟用。 這兩個內容彼此獨立。
除了 StrucId 和 Version 之外,所有 MQMD 欄位都公開為其他訊息物件內容,並以 JMS_IBM_MQMD 為字首。
JMS_IBM_MQMD* 內容優先於上表所說明的其他內容 (例如 JMS_IBM*)。
傳送訊息
除了 StrucId 和 Version 之外的所有 MQMD 欄位都已呈現。 這些內容僅參照 MQMD 欄位; 如果內容同時出現在 MQMD 和 MQRFH2 標頭中,則不會設定或擷取 MQRFH2 中的版本。 可以設定任何這些內容,但 JMS_IBM_MQMD_BackoutCount除外。 會忽略為 JMS_IBM_MQMD_BackoutCount 設定的任何值。
如果內容具有長度上限,且您提供的值太長,則會截斷該值。
對於某些內容,您也必須在 Destination 物件上設定 XMSC_WMQ_MQMD_MESSAGE_CONTEXT 內容。 應用程式必須以適當的環境定義權限執行,才能使此內容生效。 如果您未將 XMSC_WMQ_MQMD_MESSAGE_CONTEXT 設為適當的值,則會忽略內容值。 如果您將 XMSC_WMQ_MQMD_MESSAGE_CONTEXT 設為適當的值,但沒有佇列管理程式的足夠環境定義權限,則會發出異常狀況。 需要 XMSC_WMQ_MQMD_MESSAGE_CONTEXT 特定值的內容如下。
- JMS_IBM_MQMD_UserIdentifier
- JMS_IBM_MQMD_AccountingToken
- JMS_IBM_MQMD_ApplIdentity資料
- JMS_IBM_MQMD_PutAppl類型
- JMS_IBM_MQMD_PutAppl名稱
- JMS_IBM_MQMD_PutDate
- JMS_IBM_MQMD_PutTime
- JMS_IBM_MQMD_ApplOrigin資料
接收訊息
| 內容 | 說明 | 類型 |
|---|---|---|
| JMS_IBM_MQMD_REPORT | 報告訊息的選項 | System.Int32 |
| JMS_IBM_MQMD_MSGTYPE | 訊息類型 | System.Int32 |
| JMS_IBM_MQMD_EXPIRY | 訊息期限 | System.Int32 |
| JMS_IBM_MQMD_FEEDBACK | 回饋碼或原因碼 | System.Int32 |
| JMS_IBM_MQMD_ENCODING | 訊息資料的數字編碼 | System.Int32 |
| JMS_IBM_MQMD_CODEDCHARSETID | 訊息資料的字集 ID | System.Int32 |
| JMS_IBM_MQMD_FORMAT | 訊息資料的格式名稱 | System.String |
| JMS_IBM_MQMD_PRIORITY 附註: 如果您將值指派給不在 0-9 範圍內的 JMS_IBM_MQMD_PRIORITY ,則此值會違反 JMS 規格。
|
訊息優先順序 | System.Int32 |
| JMS_IBM_MQMD_PERSISTENCE | 訊息持續性 | System.Int32 |
| JMS_IBM_MQMD_MSGID 附註: JMS 規格指出訊息 ID 必須由 JMS 提供者設定,且必須是唯一或空值。 如果您指派值給 JMS_IBM_MQMD_MSGID ,此值會複製到 JMSMessageID。 因此,它不是由 JMS 提供者所設定,且可能不是唯一的: 此值違反 JMS 規格。
|
訊息 ID | 位元組陣列 附註: 在訊息上使用位元組陣列內容違反 JMS 規格。
|
| JMS_IBM_MQMD_CORRELID 附註: 如果您指派值給以字串 'ID:' 開頭的 JMS_IBM_MQMD_CORRELID ,此值會違反 JMS 規格。
|
相關性 ID | 位元組陣列 附註: 在訊息上使用位元組陣列內容違反 JMS 規格。
|
| JMS_IBM_MQMD_BACKOUTCOUNT | 取消計數器 | System.Int32 |
| JMS_IBM_MQMD_REPLYTOQ | 回覆佇列的名稱 | System.String |
| JMS_IBM_MQMD_REPLYTOQMGR | 回覆佇列管理程式的名稱 | System.String |
| JMS_IBM_MQMD_USERIDENTIFIER | 使用者 ID | System.String |
| JMS_IBM_MQMD_ACCOUNTINGtoken | 帳戶記號 | 位元組陣列 附註: 在訊息上使用位元組陣列內容違反 JMS 規格。
|
| JMS_IBM_MQMD_APPLIDENTITYDATA | 與身分相關的應用程式資料 | System.String |
| JMS_IBM_MQMD_PUTAPPLTYPE | 放置訊息的應用程式類型 | System.Int32 |
| JMS_IBM_MQMD_PUTAPPLNAME | 放置訊息的應用程式名稱 | System.String |
| JMS_IBM_MQMD_PUTDATE | 放置訊息的日期 | System.String |
| JMS_IBM_MQMD_PUTTIME | 放置訊息的時間 | System.String |
| JMS_IBM_MQMD_APPLORIGINDATA | 與出處相關的應用程式資料 | System.String |
| JMS_IBM_MQMD_GROUPID | 群組 ID | 位元組陣列 附註: 在訊息上使用位元組陣列內容違反 JMS 規格。
|
| JMS_IBM_MQMD_MSGSEQNUMBER | 群組內本端訊息的序號 | System.Int32 |
| JMS_IBM_MQMD_OFFSET | 從邏輯訊息開始的實體訊息中的資料偏移 | System.Int32 |
| JMS_IBM_MQMD_MSGFLAGS | 訊息旗標 | System.Int32 |
| JMS_IBM_MQMD_ORIGINALLENGTH | 原始訊息的長度 | System.Int32 |
如需進一步詳細資料,請參閱 MQMD 。
範例
此範例會導致將訊息放入具有 MQMD.UserIdentifier 設為 "JoeBloggs"。
// Create a ConnectionFactory, connection, session, producer, message
// ...
// Create a destination
// ...
// Enable MQMD write
dest.setBooleanProperty(XMSC_WMQ_MQMD_WRITE_ENABLED,
XMSC_WMQ_MQMD_WRITE_ENABLED_YES);
// Optionally, set a message context if applicable for this MD field
dest.setIntProperty(XMSC_WMQ_MQMD_MESSAGE_CONTEXT,
XMSC_WMQ_MDCTX_SET_IDENTITY_CONTEXT);
// On the message, set property to provide custom UserId
msg.setStringProperty(JMS_IBM_MQMD_USERIDENTIFIER, "JoeBloggs");
// Send the message
// ...在設定 JMS_IBM_MQMD_USERIDENTIFIER 之前,必須先設定 XMSC_WMQ_MQMD_MESSAGE_CONTEXT。 如需使用 XMSC_WMQ_MQMD_MESSAGE_CONTEXT 的相關資訊,請參閱訊息物件內容。
同樣地,您可以在接收訊息之前將 XMSC_WMQ_MQMD_READ_ENABLED 設為 true ,然後使用訊息的 get 方法 (例如 getStringProperty) ,來解壓縮 MQMD 欄位的內容。 任何收到的內容都是唯讀的。
此範例會導致值欄位保留 MQMD.ApplIdentityData 欄位。
// Create a ConnectionFactory, connection, session, consumer
// ...
// Create a destination
// ...
// Enable MQMD read
dest.setBooleanProperty(XMSC_WMQ_MQMD_READ_ENABLED, XMSC_WMQ_MQMD_READ_ENABLED_YES);
// Receive a message
// ...
// Get required MQMD field value using a property
System.String value = rcvMsg.getStringProperty(JMS_IBM_MQMD_APPLIDENTITYDATA);