Extensions to Standard JMS API

Solace JMS uses the following extensions to the standard JMS API. These extensions include JMS properties and utility functions.

For information on the various property sources through which a JMS property can be set, how they are defined, and how each potential property source is prioritized, refer to JMS Properties Reference.

Solace JMS Extensions

Extension to Standard JMS Description

Authentication Scheme

(SOLACE_JMS_AUTHENTICATION_SCHEME)

Data and JNDI connection properties that specify the authentication scheme to use for a client connection. For more information, refer to Authentication Scheme.

Compression Level

(SOLACE_JMS_COMPRESSION_LEVEL)

A data connection property that enables the compression of message traffic between producers, consumers, and an event broker.

Create JNDI Object Utility Functions

The following utility functions can be used to programmatically create JNDI objects:

  • SolJmsUtility.createConnectionFactory(...)— Creates a Solace proprietary implementation of a ConnectionFactory.
  • SolJmsUtility.createQueue(...)—Creates a Solace proprietary implementation of a queue given a topic name.
  • SolJmsUtility.createTopic(...)—Creates a Solace proprietary implementation of a topic given a topic name.

Dead Message Queue (DMQ) Eligible

(SOLACE_JMS_PROP_DEAD_MSG_QUEUE_ELIGIBLE)

An API property that enables the Solace JMS API to allow a Guaranteed message to be moved from a queue or a topic endpoint to a DMQ when it has an expired Time‑To‑Live (TTL) value.

A DMQ is a special message queue that can be provisioned on the event broker to spool DMQ‑eligible messages with expired TTLs, instead of discarding the messages.

For more information, refer to Dead Message Queue Eligibility.

Deliver-To-One

(SOLACE_JMS_PROP_DELIVER_TO_ONE)

A message property that can be used to specify that if the published message matches multiple Direct Transport clients on the event broker, it can only be delivered to at-most-one of them.

For more information, refer to Delivering Messages to Single Consumers.

Deliver-To-One Override

(SOLACE_JMS_DELIVER_TO_ONE_OVERRIDE)

A message property that enables the API to override a Deliver-To-One flag set for a message. This optional setting allows clients to receive all Deliver-To-One tagged messages.

For more information, refer to Delivering Messages to Single Consumers.

Discard Indication

(SOLACE_JMS_PROP_MSG_DISCARD_INDICATION)

A message property that provides an indication that a message has been discarded prior to the current one.

For more information, refer to Message Discard Notification.

Dynamic Durable Endpoints

(SOLACE_JMS_DYNAMIC_DURABLES)

An API property that enables the Solace JMS API to dynamically provision durable endpoints on an event broker, instead of relying on an administrator to statically provision them through the CLI or SolAdmin. Refer to Dynamic Durables.

Eliding Eligible

(SOLACE_JMS_PROP_ELIDING_ELIGIBLE)

A message property that specifies that a published message is eligible for message eliding.

Refer to Eliding Eligibility.

Get Message Size Utility

(SolJmsUtility.getMessageSize())

A utility function that gets the encoded size of the message payload in bytes.

JMS Client Description

(SOLACE_JMS_CLIENT_DESCRIPTION)

A JNDI connection property that sets the client description for the JMS connection (that is, the data connection).

JNDI Client Description

(SOLACE_JMS_JNDI_CLIENT_DESCRIPTION)

A data connection property that sets the client description for the JNDI connection.

JMS Message Serialization Utility Functions

The following utility functions can be used to serialize and deserialize JMS messages:

  • SolJmsUtility.fromByteArray()—Converts a byte array representing a serialized JMS Message into a JMS Message.
  • SolJmsUtility.toByteArray()—Serializes a JMS Message into a byte array.

Message Callback on I/O Thread

(SOLACE_JMS_MSG_CALLBACK_ON_IO_THREAD)

An API property that enables the Solace JMS API to asynchronously deliver messages sent by the Direct Transport mode to consumers from the I/O thread instead of from a consumer notification thread.

This option provides lower latency; however, the maximum message throughput is reduced.

XMLPayload

(SOLACE_JMS_PROP_ISXML)

A message property that specifies that the text message contains XML content so that it can be routed based on its XML contents instead of a destination.

Message Dump Utility

(SolJmsUtility.dumpMessage())

A utility function that produces a human‑readable dump of the message properties and contents. Refer to Displaying Messages.

Message VPN

(SOLACE_JMS_VPN)

A data connection property that specifies the Message VPN on the event broker that the Session should attempt to connect to. If not specified, the Session attempts to join the client to the default Message VPN provisioned for the event broker.

OAuth 2.0 Access Token

(SOLACE_JMS_OAUTH2_ACCESS_TOKEN)

A data connection property that specifies an OAuth 2.0 Access Token. Refer to OAuth2 Access Token.

OAuth 2.0 Issuer Identifier

(SOLACE_JMS_OAUTH2_ISSUER_IDENTIFIER)

A data connection property that specifies and OAuth 2.0 Issuer Identifier. Refer to OAuth Issuer Identifier.

OIDC ID Token

(SOLACE_JMS_OIDC_ID_TOKEN)

A data connection property that specifies an OIDC ID Token. Refer to OIDC ID Token.

Optimize Direct

(SOLACE_JMS_OPTIMIZE_DIRECT)

A data connection property that can be used to allow only one producer and one consumer to be created per connection to optimize messaging rates when Direct Messaging is used.

Respect TTL

(SOLACE_JMS_RESPECT_TIME_TO_LIVE)

An API property that enables an endpoint to respect the TTL values of received messages.

For more information, refer to Time-to-Live.

Solace Client Acknowledge Mode (SOL_CLIENT_ACKNOWLEDGE)

A Solace-defined message acknowledgment mode. Refer to Acknowledgment Modes.

Solace Event Listener (com.solacesystems.jms.SolEventSource)

An interface that enables client applications to register listeners for events of interest (for example, active flow indication).

Subscriber Local DTO Priority

(SOLACE_JMS_SUBSCRIBER_LOCAL_DTO_PRIORITY)

A data connection property that sets the priority that a client’s subscriptions have for receiving Deliver-To-One messages published on the event broker that the client is directly connected to.

For more information, refer to Delivering Messages to Single Consumers.

Subscriber Network DTO Priority

(SOLACE_JMS_SUBSCRIBER_NETWORK_DTO_PRIORITY)

A data connection property that sets the priority that a client’s subscriptions have for receiving Deliver-To-One messages published by other Solace PubSub+ event brokers.

Network DTO priority subscription flags are currently ignored by the Solace JNDI. They are reserved for future development.

Use Default Context

(SOLACE_JMS_USE_DEFAULT_CONTEXT)

A data connection property that sets whether each JMS connection to the event broker is created within a single default Context or whether a new Context is created for each connection (the default). Note that each Context that is created uses a separate processing thread. For more information, refer to Managing Sessions.

Wildcard Destinations

Support of wildcards in destination names for consumers. Refer to Topic Support & Syntax.