The message headers provide metadata describing who or what created the message, when it was created, how long its data is valid, etc. The headers also contain routing information that describes the destination of the message (topic or queue), how a message should be acknowledged, and a lot more.
The Message
interface provides
mutator ("set") methods for
each of the JMS headers, but only the JMSReplyTo
,
JMSCorrelationID
, and JMSType
headers can be modified using these methods. Calls to the mutator
methods for any of the other JMS headers will be ignored when the
message is sent. According to the authors of the specification, the
mutator methods were left in the Message
interface
for "general orthogonality"; to balance the accessor
methods—a fairly strange but well-established justification.
The
accessor ("get") methods
always provide the JMS client with information about the JMS headers.
However, some JMS headers (i.e., JMSTimestamp
,
JMSRedelivered
, etc.) are not available until
after the message is sent or even received.