Header
fields contains some important information, this is used by client and
providers to identify and route messages.
Below
table summarize JMS headers.
Header
|
Data Type
|
Description
|
JMSDestination
|
String
|
Specifies
the destination to which the message is being sent.
|
JMSDeliveryMode
|
String
|
JMS
supports two delivery modes.
a.
NON_PERSISTENT
b.
PERSISTENT
NON_PERSISTENT: Message is not
stored in stable storage. A JMS provider failure can cause this message to be
lost.
PERSISTENT: JMS message is
stored in persistent storage. Message is not lost on JMS provider failures.
|
JMSMessageID
|
String
|
It
is a unique ID, that uniquely identifies each message sent by a provider. All
JMSMessageID values must start with the prefix 'ID:'.
|
JMSTimestamp
|
long
|
It
represents the time a message was handed off to a provider to be sent. Time
is represented in milliseconds.
|
JMSCorrelationID
|
string
|
It
is used to link one message with another. Mostly it is used to link a
response message with its related request message.
JMSCorrelationID
can hold one of the following:
a.
A provider-specific message ID
b.
An application-specific String
c.
A provider-native byte[] value.
|
JMSReplyTo
|
string
|
It
is the destination where a reply to the message should be sent. This header
field is supplied by a client when a message is sent.
|
JMSRedelivered
|
boolean
|
Provider
set this header field value to true, when it is redelivering the message to
client.
When
the provider set this flag to true, it means that the message is delivered
previously, but provider do not receive any acknowledgement from the client.
|
JMSType
|
string
|
The
JMSType header field contains a message type identifier supplied by a client
when a message is sent.
|
JMSExpiration
|
long
|
Specifies
the expiration time of the message. It is represented in milliseconds.
When
a message is sent, the JMS provider calculates its expiration time by adding
the time-to-live value specified on the send method to the time the message
was sent.
Example
java.util.Date
date = new java.util.Date();
long
currentTimeInMillis = date.getTime();
long
expiration = currentTimeInMillis + 60000;
message.setJMSExpiration(expiration);
Above
statements set the expiration time to 1 minute.
|
JMSPriority
|
integer
|
Priority
of the jms message. JMS defines 10 priority values from 0 to 9.
0
– Lowest priority
9
– Highest priority
|
JMSDeliveryTime
|
long
|
When
a message is sent, the JMSDeliveryTime header field is left unassigned. After
completion of the send or publish method, it holds the delivery time of the
message
|
Not
all these header fields are set by client, some are set by client and some are
set by JMS provider. Below table summarizes this.
Header Field
|
Set By
|
Java API
|
JMSDestination
|
JMS provider send method
|
setJMSDestination
(not for client use)
|
JMSDeliveryMode
|
JMS provider send method
|
setJMSDeliveryMode(not
for client use)
|
JMSExpiration
|
JMS provider send method
|
setJMSExpiration
(not for client use)
|
JMSDeliveryTime
|
JMS provider send method
|
setJMSDeliveryTime
(not for client use)
|
JMSPriority
|
JMS provider send method
|
setJMSPriority
(not for client use)
|
JMSMessageID
|
JMS provider send method
|
setJMSMessageID
(not for client use)
|
JMSTimestamp
|
JMS provider send method
|
setJMSTimestamp
(not for client use)
|
JMSCorrelationID
|
Client application
|
setJMSCorrelationID,
setJMSCorrelationIDAsBytes
|
JMSReplyTo
|
Client application
|
setJMSReplyTo
|
JMSType
|
Client application
|
setJMSType
|
JMSRedelivered
|
JMS provider prior to delivery
|
setJMSRedelivered
(not for client use)
|
No comments:
Post a Comment