Restrictions and variations for core classes
The core classes generally behave consistently across all environments,
even if the equivalent MQI calls normally have environment differences. The
behavior is as if a Windows or UNIX WebSphere(R) MQ queue manager is used, except for
the following minor restrictions and variations.
MQGMO_* values
The following MQGMO_* values are not supported by all queue managers, and
their use might throw MQException from an MQQueue.get():
- MQGMO_SYNCPOINT_IF_PERSISTENT
- MQGMO_MARK_SKIP_BACKOUT
- MQGMO_BROWSE_MSG_UNDER_CURSOR
- MQGMO_LOCK
- MQGMO_UNLOCK
- MQGMO_LOGICAL_ORDER
- MQGMO_COMPLETE_MESSAGE
- MQGMO_ALL_MSGS_AVAILABLE
- MQGMO_ALL_SEGMENTS_AVAILABLE
- MQGMO_UNMARKED_BROWSE_MSG
- MQGMO_MARK_BROWSE_HANDLE
- MQGMO_MARK_BROWSE_CO_OP
- MQGMO_UNMARK_BROWSE_HANDLE
- MQGMO_UNMARK_BROWSE_CO_OP
Additionally, MQGMO_SET_SIGNAL is not supported when used from Java.
MQPMRF_* values
These are used only when putting messages to a distribution list, and are
supported only by queue managers supporting distribution lists. For example,
z/OS queue managers do not support distribution lists.
MQPMO_* values
The following MQPMO_* values are not supported by all queue managers, and
their use might throw MQException from an MQQueue.put() or an MQQueueManager.put():
- MQPMO_LOGICAL_ORDER
- MQPMO_NEW_CORREL_ID
- MQPMO_NEW_MESSAGE_ID
- MQPMO_RESOLVE_LOCAL_Q
MQCNO_FASTPATH_BINDING
This value is ignored on queue managers that do not support it, or when
using a TCP/IP client connection.
MQRO_* values
The following report options can be set but are ignored by some queue managers.
This can affect applications connected to a queue manager that honors the
report options when the report message is generated by a remote queue manager
that does not. Avoid relying on these options if there is a possibility that
a queue manager involved does not support them.
- MQRO_EXCEPTION_WITH_FULL_DATA
- MQRO_EXPIRATION_WITH_FULL_DATA
- MQRO_COA_WITH_FULL_DATA
- MQRO_COD_WITH_FULL_DATA
- MQRO_DISCARD_MSG
- MQRO_PASS_DISCARD_AND_EXPIRY
Miscellaneous differences with z/OS
- Message priority
- When a message is put with a priority greater than MaxPriority, a z/OS
queue manager rejects the put with MQCC_FAILED and MQRC_PRIORITY_ERROR. Other
platforms complete the put with MQCC_WARNING and MQRC_PRIORITY_EXCEEDS_MAXIMUM,
and treat the message as if it were put with MaxPriority.
- BackoutCount
- A z/OS queue manager returns a maximum BackoutCount of 255, even if
the message has been backed out more than 255 times.
- Default dynamic queue prefix
- When connected to a z/OS queue manager using a bindings connection,
the default dynamic queue prefix is CSQ.*. Otherwise, the default dynamic
queue prefix is AMQ.*.
- MQQueueManager constructor
- Client connect is not supported on z/OS. Attempting to connect with
client options results in an MQException with MQCC_FAILED and MQRC_ENVIRONMENT_ERROR.
The MQQueueManager constructor might also fail with MQRC_CHAR_CONVERSION_ERROR
(if it fails to initialize conversion between the IBM-1047 and ISO8859-1 code
pages), or MQRC_UCS2_CONVERSION_ERROR (if it fails to initialize conversion
between the queue manager's code page and Unicode). If your application fails
with one of these reason codes, ensure that the National Language Resources
component of Language Environment(R) is installed, and ensure
that the correct conversion tables are available.
Conversion tables for
Unicode are installed as part of the z/OS C/C++ optional
feature. See the z/OS C/C++ Programming
Guide, SC09-4765, for more information about enabling
UCS-2 conversions.