Message Headers

Solace and JMS message headers can be created or manipulated using the User-Configured Header Transforms feature.

Solace Headers

Solace headers exposed to the connector are documented in the Spring Cloud Stream Binder for Solace PubSub+ documentation.

JMS Message Headers

You can use the following JMS headers to get and set JMS message properties.

 

Header Name Type Access Description

jms_correlationId

String

Read/Write

The correlation ID for the message.

jms_deliveryMode

int

Read

The delivery mode value specified for this message.

jms_destination

jakarta.jms.Destination

Read

The destination to which the message is being sent.

For versions 2.6.4 and later, consumer bindings no longer map jms_destinationand therefore are no longer accessible for use in transform-header expressions. If your configuration includes default workflow transform-header expressions that nullify this message header, you can remove the expressions.

you can now remove those expressions.

jms_expiration

long

Read

The time at which the JMS message is set to expire.

jms_messageId

String

Read

A value that uniquely identifies each message sent by a provider.

jms_priority

int

Read/Write

Specifies the message’s priority set on the send.

When header is absent, JMS message is sent with default priority of 4.

jms_redelivered

boolean

Read

An indication of whether this message is being redelivered.

jms_replyTo

For version 2.0.0 and later: jakarta.jms.Destination

For versions earlier than 2.0.0: javax.jms.Destination

Read (Available only ror versions 2.6.3 and earlier)

Write (Available only for Outbound messages)

The Destination object to which a reply to this message should be sent.

For versions 2.6.4 and later, consumer bindings no longer map jms_replyToand therefore are no longer accessible for use in transform-header expressions. If your configuration includes default workflow transform-header expressions that nullify this message header, you can remove the expressions.

jms_timestamp

long

Read

The time a message was handed off to a provider to be sent.

jms_timeToLive

long

Write

Specifies the message’s time to live set on the send.

When header is absent, JMS message is sent with default timeToLive of 0 (zero means that a message never expires).

jms_type

String

Read/Write

The message type identifier supplied by the client when the message was sent.

JMS Binder Headers

For connector versions 2.0.0 and later, you can use the following header to get and set JMS Binder properties and JMS Binder metadata.

 

Header Name Type Access Description

jms_scst_nullPayload

boolean

Read

Specifies when the JMS message payload is null.

Two cases exist:

  • A JMS TextMessage with no message payload is received: The payload is converted to an empty String, and the jms_scst_nullPayload header is added.

  • A JMS Message with no message payload is received: The payload is converted to an empty byte array, and the jms_scst_nullPayload header is added.

Reserved Message Headers

The following are reserved header spaces:

Any headers with these prefixes (that are not defined by the connector or any technology used by the connector) may not be backwards compatible in future versions of this connector.

User Configured Header Transforms

Generally, the consumed message’s headers are propagated through the connector to the output message. If you want to transform the headers, then you can do so as follows:

# <workflow-id> : The workflow ID ([0-19])
# <header> : The key for the outbound header
# <expression> : A SpEL expression which has "headers" as parameters
                 
solace.connector.workflows.<workflow-id>.transform-headers.expressions.<header>=<expression>

Example 1: To create a new header, new_header, for workflow 0 that is derived from the headers foo & bar, enter:

solace.connector.workflows.0.transform-headers.expressions.new_header="T(String).format('%s/abc/%s', headers.foo, headers.bar)"

Example 2: To remove the header, delete_me, for workflow 0, set the header transform expression to null, enter:

solace.connector.workflows.0.transform-headers.expressions.delete_me="null"

For more information about Spring Expression Language (SpEL) expressions, see Spring Expression Language (SpEL).