11/13

# A Message Queue Implementation of Optional JMS Functionality

The JMS specification indicates certain items that are optional: each JMS provider (vendor) chooses whether to implement them. This appendix describes how the Message Queue product handles JMS optional items.

Table A-1 describes how the Message Queue service handles JMS optional items.

## Optional Features

Table A-1 Optional JMS Functionality

Section in JMS Specification | Description and Message Queue Implementation
--- | ---
3.4.3 `JMSMessageID` | "Since message IDs take some effort to create and increase a message's size, some JMS providers may be able to optimize message overhead if they are given a hint that message ID is not used by an application. JMS Message Producer provides a hint to disable message ID." Message Queue implementation: Product does not disable Message ID generation (any `setDisableMessageID`() call in `MessageProducer` is ignored). All messages will contain a valid `MessageID` value.
3.4.12 Overriding Message Header Fields | "JMS does not define specifically how an administrator overrides these header field values. A JMS provider is not required to support this administrative option." Message Queue implementation: The Message Queue product supports administrative override of the values in message header fields through configuration of the client runtime (see Message Header).
3.5.9 JMS Defined Properties | "JMS Reserves the '`JMSX`' Property name prefix for JMS defined properties.""Unless noted otherwise, support for these properties is optional." Message Queue implementation: The `JMSX` properties defined by the JMS 1.1 specification are supported in the Message Queue product (see "Stability of Message Queue Interfaces" in Oracle GlassFish Server Message Queue Administration Guide).
3.5.10 Provider-specific Properties | "JMS reserves the '`JMS_<`vendor_name `>`' property name prefix for provider-specific properties." Message Queue implementation: The purpose of the provider-specific properties is to provide special features needed to support JMS use with provider-native clients. They should not be used for JMS to JMS messaging.
4.4.8 Distributed Transactions | "JMS does not require that a provider support distributed transactions." Message Queue implementation: Distributed transactions are supported in this release of the Message Queue product (see Transactions).
4.4.9 Multiple Sessions | "For PTP <point-to-point distribution model>, JMS does not specify the semantics of concurrent `QueueReceivers` for the same queue; however, JMS does not prohibit a provider from supporting this." See section 5.8 of the JMS specification for more information. Message Queue implementation: The Message Queue implementation supports queue delivery to multiple consumers. For more information, see Point-To-Point Messaging.