Spring Book – Chapter 17 – Messaging with Spring

Core Components

Before deep-diving into the JMS sub-topics, lets discuss in details some of the core components constituting JMS. Understanding these components is very relevant to keep up with the various terminologies used through this Chapter and other Chapters based on this. The core components of JMS are as follows:

  • Message
  • Destination
  • ConnectionFactory
  • Connection
  • Session
  • MessageProducer
  • MessageConsumer

The interaction between these core components in the JMS ecosystem can be pictorially represented as shown in Figure 18-6 below.

 Figure 18-6. Interaction between core components in JMS

Figure 18-6. Interaction between core components in JMS

In the following section we will cover these core components in detail for your clear understanding.


JMS provides different messages for different content, but all messages have a similar structure and they are all derived from the standard javax.jms.Message interface.

A typical message consists of a message header, optional message properties and message body.

Message Header

Message header is a mandatory component in a message and is used for routing and identifying the message. They typically consists of key-value pairs and are set automatically by the JMS message provider during producing and consuming of messages and some are set by the JMS client on message to message basis as the case may be.

The various header fields of the Message interface can be summarized as shown in Table 18-1 below.

Table 18-1. JMS header field details

Header Field Type Description
JMSMessageID String It uniquely identifies each message that is sent by the provider. This field is set by the provider during the send process.
JMSDestination javax.jms.Destination The Destination to which the message is sent. It is set by the provider during the send process.
JMSDeliveryMode int Possible values are: DeliveryMode.PERSISTENT or DeliveryMode.NON_PERSISTENT. A persistent message is delivered “once and only once”and a non-persistent message is delivered “at most once.”
JMSTimestamp long The time that the message was delivered to a provider to be sent. It is set by the provider during the send process.
JMSExpiration long The time when a message should expire. Expired messages will not be delivered by the provider. A value of 0 means that the message will never expire.
JMSPriority int The priority of the message which is set by the provider during the send process. 0 being the lowest and 9 being the highest priority.
JMSCorrelationID String Used to link a response message with a request message and is set by the JMS program when sending the message.
JMSReplyTo javax.jms.Destination Used by a requesting program to indicate where a reply message should be sent and is set by the JMS program while sending the message.
JMSType String Type of the message.
JMSRedelivered boolean Indicates that the message was delivered earlier to the JMS program, but the program did not acknowledge its receipt. This is set by the provider during the message receiving process.

Page Visitors: 16823

The following two tabs change content below.
Tomcy John

Tomcy John

Blogger & Author at javacodebook
He is an Enterprise Java Specialist holding a degree in Engineering (B-Tech) with over 10 years of experience in several industries. He's currently working as Principal Architect at Emirates Group IT since 2005. Prior to this he has worked with Oracle Corporation and Ernst & Young. His main specialization is on various web technologies and acts as chief mentor and Architect to facilitate incorporating Spring as Corporate Standard in the organization.
Tomcy John

Latest posts by Tomcy John (see all)

1 thought on “Spring Book – Chapter 17 – Messaging with Spring

  1. First of all I would like to say fantastic blog! I had a quick question which I’d like to ask if you don’t mind. I was interested to know how you center yourself and clear your head before writing. I have had difficulty clearing my mind in getting my ideas out there. I do enjoy writing but it just seems like the first 10 to 15 minutes are usually wasted just trying to figure out how to begin. Any recommendations or tips? Thank you!|

Leave a Reply

Your email address will not be published. Required fields are marked *