API Properties

The following properties can be used to configure the Solace JMS API:

Callback on I/O Thread

This property specifies whether to call Message Listeners directly from the I/O thread. When this property is set to false (the default), Message Listeners are called from a consumer notification thread. For more information, refer to Receiving Message Asynchronously.

To avoid possible indeterminate behavior, it is recommended that you leave this property to the default value of false. Contact Solace before enabling this property.

  • Type: Boolean
  • Format: [true|false]
  • Default: false

Callback on IO Thread Property

Property Source (listed in descending priority) Example

System

-DSolace_JMS_MsgCallbackOnIOThread=true

Initial Context

env.put(SupportedProperty.SOLACE_JMS_MSG_CALLBACK_ON_IO_THREAD, true);

JNDI Properties File

Solace_JMS_MsgCallbackOnIOThread=true

JNDI Connection Factory

SolAdmin—Set through the Message Callback on IO Thread box in the Messaging Properties tab of the New JMS Connection Factory or Edit JMS Connection Factory dialog box.

CLI/SEMP—Set through Property List “transport‑properties”, Property “msg‑callback‑on‑io‑thread”.

Consumer Default Flow Congestion Limit

This property specifies the default consumer's congestion limit. If a Consumer accumulates more than this number of messages not yet handled by the consuming application, the API temporarily suspends reading from the underlying TCP connection.

  • Type: Integer
  • Format: Valid values are 0 or greater.
  • Default: 5000

Consumer Default Flow Congestion Limit Property

Property Source Example

System

-DSolace_JMS_ConsumerDefaultFlowCongestionLimit=5000

Consumer Dispatcher Queue Size

This property specifies the number of messages that can be enqueued by the consumer notification dispatcher queue.

  • Type: Integer
  • Format: Valid values are 0 or greater.
  • Default: 75000

Consumer Dispatch Queue Size Property

Property Source Example

System

-DSolace_JMS_ConsumerDispatcherQueueSize=75000

Dead Message Queue Name

This property is used to compare against the queue name used in the Session.createQueue(String queueName) call to prevent the API from attempting to create the DMQ when dynamic durables is activated.

  • Type: String
  • Format: Any valid queue name
  • Default: #DEAD_MSG_QUEUE

Dead Message Queue Name Property

Property Source Example

System

-DSolace_JMS_DeadMSGQueueName=#DEAD_MSG_QUEUE

Delayed Start Override

Instead of automatically starting a consumer after JMS connection is started, by default, the Solace JMS implementation delays starting durable consumers or non‑durable consumers that use Guaranteed Transport until the first time receive() or setMessageListener() is called.

The delayed start prevents an error from being returned because the following situation:

A JMS connection start implicitly starts consumers when they are created. Therefore, with the Solace JMS implementation, after a message consumer is created, it is implicitly started as a synchronous consumer (that is, without a consumer without a message listener), and an error can be returned when a message listener is then set for that consumer.

Setting the Delayed Start Override property to false overrides the delaying behavior so that the consumer is started on calling start().

  • Type: Boolean
  • Format: [true|false]
  • Default: true (that is, not overridden).

Delayed Start Override Property

Property Source Example

System

-DSolace_JMS_DelayedStartOverride=true

Initial Context

env.put(SupportedProperty.SOLACE_JMS_DELAYED_START_OVERRIDE, false);

JNDI Properties File

Solace_JMS_DelayedStartOverride=true

Dynamic Durables

This property specifies whether queues or topic endpoints (which are used to support durable subscription names), are to be created on the event broker when the corresponding Session.createDurableSubscriber() or Session.createQueue() is called. A created endpoint uses a Respect Time to Live (TTL) setting according to the JMS “Respect Time-to-Live” property (refer to Respect Time-To-Live).

  • Type: Boolean
  • Format: [true|false]
  • Default: false

Dynamic Durables Property

Property Source (listed in descending priority) Example

Initial Context

env.put(SupportedProperty.SOLACE_JMS_DYNAMIC_DURABLES, true);

JNDI Properties File

Solace_JMS_DynamicDurables=true

JNDI Connection Factory

SolAdmin—Set through the Dynamic Durables box in the Endpoint Properties tab of the New JMS Connection Factory or Edit JMS Connection Factory dialog box.

CLI/SEMP—Set through Property List “dynamic‑endpoint‑properties”, Property “dynamic‑durables”.

Frequency Manager Maximum Reconnects

This property specifies the maximum number of reconnects to allow before the reconnect frequency manager closes a connection.

  • Type: Integer
  • Format: Valid values are 0 or greater.
  • Default: 10

Frequency Manager Maximum Reconnects Property

Property Source Example

System

-DSolace_JMS_ReconnectFreqManagerMaxReconnects=5

Producer Dispatcher Queue Size

The producer notification dispatcher queue is used by the API to notify Producers of message acknowledgments and message publishing exceptions. This property specifies the maximum number of message acknowledgments and exceptions that can be enqueued by the Producer Notification Dispatcher Queue.

  • Type: Integer
  • Format: Valid values are 0 or greater.
  • Default: 2000 elements

Producer Dispatcher Queue Size Property

Property Source Example

System

-DSolace_JMS_ProducerDispatcherQueueSize=10000

Respect Time-To-Live

This property is used to indicate whether dynamically created durable topic endpoints or queues are set to respect TTL (refer to Time-to-Live).

  • Type: Boolean
  • Format: [true|false]
  • Default: true

Respect Time-To-Live Property

Property Source (listed in descending priority) Example

Initial Context

env.put(SupportedProperty.SOLACE_JMS_RESPECT_TIME_TO_LIVE, true);

JNDI Properties File

Solace_JMS_RespectTimeToLive=true

JNDI Connection Factory

SolAdmin—Set through the Respect TTL box in the Endpoint Properties tab of the New JMS Connection Factory or Edit JMS Connection Factory dialog box.

CLI/SEMP—Set through Property List “dynamic‑endpoint‑properties”, Property “respect‑ttl”.

Use Default Context

This property specifies whether to use a new context or reuse the default context for new JMS connections.

  • Type: Boolean
  • Format: [true|false]
  • Default: false (creates a new Context for every connection)

Use Default Context Property

Property Source (listed in descending priority) Example

Initial Context

env.put(SupportedProperty.SOLACE_JMS_USE_DEFAULT_CONTEXT, true);

JNDI Properties File

Solace_JMS_UseDefaultContext=true