2. JMS
• JMS (Java Message Service) is a widely-used API for Message
Oriented Middleware. It allows communication between
different components of a distributed application to be loosely
coupled, reliable, and asynchronous.
• JMS supports two models for messaging:
• Queues - Point-to-point
• Topics - Publish and subscribe
• Mule's JMS transport lets you easily send and receive
messages to queues and topics for any message service which
implements the JMS specification.
3. QUEUES
• In the point-to-point or queuing model, a sender posts
messages to a particular queue and a receiver reads messages
from the queue. Here, the sender knows the destination of the
message and posts the message directly to the receiver's
queue. It is characterized by the following:
• Only one consumer gets the message
• The producer does not have to be running at the time
the consumer consumes
the message, nor does the consumer need to be running
at the time the message is sent
• Every message successfully processed is
acknowledged by the consumer
4. Configuration with Example:
• Anypoint Studio offers easy-to-use components to connect to
JMS Queues and Topics. In the below example, we will use
ActiveMQ, a leading open source JMS implementation from
Apache that supports JMS.
• The outline of the simple steps required to implement this
example is as follows:
• Import ActiveMQ libraries
• Create an ActiveMQ connector
• Enqueue to JMS Queue
• Run the sample
5. 1. Import ActiveMQ Library:
• Download Apache ActiveMQ binaries (ActiveMQ 5.11) from
http://activemq.apache.org/download.html. Unzip the
compressed file to any folder on your file system. Let’s call
it <ACTIVEMQ_HOME>.
• Create a new flow in Mule Studio and name it “jms”. To
configure the project to use ActiveMQ libraries, right-click
on the project -> Properties -> Java Build Path -> Add
External JARs. Select “activemq-all-5.11-SNAPSHOT.jar”
from <ACTIVEMQ_HOME>.
6.
7. 2. Create an ActiveMQ Connector:
• Double-click on “jms” flow to bring up the message flow. Click
on the “Global Elements” tab. Click on “Create” and locate
ActiveMQ under “Connectors -> JMS” and click OK.
8. 3. Enqueue to JMS Queue:
• We will use the request payload received from an HTTP
inbound endpoint to seed the ActiveMQ Queue. Open the
“jms” message flow and drag and drop an HTTP endpoint on
to the flow.
• Double-click on the HTTP endpoint to bring up the
properties dialog. Specify “jms_queue” for Path. This will
make the HTTP endpoint accessible using URL
http://localhost:7777/jms_queue.
• Set a payload that you want to add to the queue.
• Drag and drop a JMS endpoint next to the HTTP inbound
endpoint.
9. Select “Active_MQ” for Connection Reference in the Connector
Configuration that we created in Step 2.
10. 4. Create a Jms_receiver :
• Use a Jms endpoint to receive the messages in the queue. Its
configuration is as follows:
11. • Use a Logger to log the Received Message.
• Use Set-payload to send a response back to the Jms Service.
• The final JMS Receiver Message Flow is as below:
5. Run the sample:
• First, run ActiveMQ using executable “activemq-admin” from
<ACTIVEMQ_HOME>/bin folder. Make sure you can access the ActiveMQ
admin page using http://localhost:8161/.
12. • Run the JMS flow.
• Open http://localhost:7777/jms_queue.This will enqueue the
request to the ActiveMQ JMS Queue “queue”.
• Verify this by examining the ActiveMQ administration page at
http://localhost:8161/admin/queues.jsp. We can see the messages
under the “Messages Enqueued” column.
13. • The Output you receive after the execution is the Payload Set by
the JMS-Client.
• Note: Only one client can read from a queue at one time and the
messages read from the queue are removed from the queue. If
you want to perform any transactions on top of JMS then the