MQ 取得訊息選項
「MQ 取得訊息」選項會控制 MQGET 的動作。
您可以指定本節稍後說明的一個以上選項,或是不指定任何選項。如果您需要多個選項,其值可以是:
- 已新增(請不要將相同常數相加超過一次),或者
- 利用執行位元 OR 運算來組合(如果程式設計語言支援位元運算)。
選項欄位的起始值是 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 有助於提供程式的使用說明;這個選項並不是要用來與任何其他選項搭配使用,但由於其值為零,因此,即使這樣使用,系統也偵測不到。