MQ 取得訊息選項
「MQ 取得訊息」選項會控制 MQGET 的動作。
您可以指定本節稍後說明的一個以上選項,或是不指定任何選項。 如果您需要多個選項,其值可以是:
- 相加(請不要將同一常數相加多次),或者
- 利用執行位元 OR 運算來組合(如果程式設計語言支援位元運算)。
Options
欄位的起始值是 MQGMO_NO_WAIT 加 MQGMO_PROPERTIES_AS_Q_DEF。
內容選項
下列選項與訊息的內容相關:
- MQGMO_PROPERTIES_AS_Q_DEF
訊息的內容(訊息描述子或延伸中包含的內容除外)必須如 PropertyControl 佇列內容所定義的那樣來表示。 如果已提供
MsgHandle
,則這個選項會被忽略,且您可以使用MsgHandle
來取得訊息的內容,除非 PropertyControl 佇列內容的值是MQPROP_FORCE_MQRFH2
。如果未指定內容選項,這是預設動作。
- MQGMO_PROPERTIES_IN_HANDLE
必須可以使用
MsgHandle
來取得訊息的內容。 如果未提供訊息控點,則呼叫會失敗,原因為 MQRC_HMSG_ERROR。- MQGMO_NO_PROPERTIES
不擷取訊息的內容(訊息描述子或延伸中包含的內容除外)。 如果已提供
MsgHandle
,這個選項會被忽略。- MQGMO_PROPERTIES_FORCE_MQRFH2
訊息的內容(訊息描述子或延伸中包含的內容除外)必須使用 MQRFH2 標頭來表示。 如此可以對預期要擷取內容,但無法變更為使用訊息控點的舊版應用程式,提供相容性。 如果已提供
MsgHandle
,這個選項會被忽略。- MQGMO_PROPERTIES_COMPATIBILITY
- 如果訊息包含字首為 "mcd"的內容, "jms.", "usr.", 或 "mqext.", 所有訊息內容都會遞送至 MQRFH2 標頭中的應用程式。 否則,訊息的所有內容(訊息描述子或延伸中包含的內容除外)都會被捨棄,而無法再供應用程式存取。
預設選項
如果不需要上述任何選項,則可以使用下列選項:
- MQGMO_NONE
- 使用這個值來指出未指定其他選項;所有選項都採用其預設值。 MQGMO_NONE 有助於提供程式的使用說明;這個選項並不是要用來與任何其他選項搭配使用,但由於其值為零,因此,即使這樣使用,系統也偵測不到。