JMSMessageID — Purpose: Routing
The
JMSMessageID
is a
String
value that uniquely identifies a
message. How unique the
identifier is depends on the vendor. It may only be unique for that
installation of the message server, or it may be universally unique.
The JMSMessageID
can be useful for historical
repositories in applications where messages need to be uniquely
indexed. The JMSMessageID
is also useful for
correlating messages, which is done using the
JMSCorrelationID
header.
The message provider generates the JMSMessageID
automatically when the message is received from a JMS client. The
JMSMessageID
must start with
ID:
, but the rest of
JMSMessageID
can be any collection of characters
that uniquely identifies the message to the JMS provider. Here is an
example of a JMSMessageID
generated by
Progress' SonicMQ:
// JMSMessageID generated by SonicMQ ID:6c867f96:20001:DF59525514
If a unique message ID is not needed by the JMS application, the JMS
client can provide a hint to the message server that an ID is not
necessary by using the setDisableMessageID(
)
method (as shown in the following code).
Vendors that heed this hint can reduce message processing time by not
generating unique IDs for each message. If a
JMSMessageID
is not generated, the
getJMSMessageID(
)
method returns null
:
// Publish-and-subscribe TopicPublisher topicPublisher = topicSession.createPublisher(topic);topicPublisher.setDisableMessageID(true);
// Point-to-point QueueSender queueSender = queueSession.createSender(topic);queueSender.setDisableMessageID(true);