Jms topics

15
Ravinder

Transcript of Jms topics

Page 1: Jms topics

Ravinder

Page 2: Jms topics

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.

Page 3: Jms topics

The publish/subscribe model supports publishing messages to a particular message topic. Subscribers may register interest in receiving messages on a particular message topic. In this model, neither the publisher nor the subscriber knows about each other. A good analogy for this is an anonymous bulletin board. The following are characteristics of this model:• Multiple consumers (or none) receive the message• There is a timing dependency between publishers and subscribers. The publisher has to create a message topic for clients to subscribe.

Page 4: Jms topics

• The subscriber has to remain continuously active to receive messages, unless it has established a durable subscription. In that case, messages published while the subscriber is not connected redistribute when it reconnects.

Example:JMS Publisher Flow Configuration: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_topic” for Path. This will make the HTTP endpoint accessible using URL http://localhost:7777/jms_topic.Set a payload that you want to add to Publish.

Page 5: Jms topics

Drag and drop a JMS endpoint next to the HTTP inbound endpoint.

Double-click the JMS endpoint to bring up the properties dialog. Specify “topic” for Topic name and Select “Active_MQ” for Connection Reference in the Connector Configuration that we created earlier.

Page 6: Jms topics

JMS Subscriber Flow Configuration:Use a Jms endpoint to subscribe the Published messages. Use a Logger to log the Received Message.Use Set-payload to send a response back to the Jms Service.Create another Subscriber to receive the same Published messages.The final JMS Subscriber Message Flow is as below:

Page 7: Jms topics

Run the JMS flow. Open http://localhost:7777/jms_topic. This will publish the request to the ActiveMQ JMS Topic “topic”. Verify this by examining the ActiveMQ administration page at

http://localhost:8161/admin/topics.jsp. We can see the messages enqueued, dequeued and the number of consumers.

The Output you receive after the execution is the Payload Set by any of the two subscribers JMS-Topic 1 or JMS-Topic2.

Page 8: Jms topics

Example to understand how JMS uses serializing, and de-serializing objects:Serialization is a process of converting an object into a sequence of bytes which can be persisted to a disk or database or can be sent through streams. The reverse process of creating object from sequence of bytes is called deserialization.Steps to share Objects via JMS are:

1. 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_serializable_queue” for Path. This will make the HTTP endpoint accessible using URL http://localhost:7777//jms_serializable_queue.

Page 9: Jms topics

2. Create a Java Class that implements the Serializable interface as below:

Page 10: Jms topics

3. Instantiate the class using Set-payload.

4. Set the values to the object using Expression.

Page 11: Jms topics

5. Drag and drop a JMS endpoint next to the HTTP inbound endpoint.Double-click the JMS endpoint to bring up the properties dialog. Specify “serial_queue” for queue name. Select “Active_MQ” for Connection Reference in the Connector Configuration that we created earlier.

Page 12: Jms topics

6. The JMS Client Message Flow is as below:

7. Use a Jms endpoint to receive the messages on the Destination with the below configuration and Active_MQ is configured before.8. Use an expression to print the contents of the received payload.

Page 13: Jms topics

9. Use a Logger to log the Received Message.10. The final JMS Subscriber Message Flow is as below:

Page 14: Jms topics

Run the JMS flow. Open http://localhost:7777/jms_serialiable_queue.

This will publish the request to the ActiveMQ JMS Topic “topic”. Verify this by examining the ActiveMQ administration page at http://localhost:8161/admin/queues.jsp. We can see the messages enqueued, dequeued and the number of consumers.

The Output you receive after the execution is the name that is sent from the Client.

The Serializable implementation is done in a similar way using Topic but with many publishers and subscribers.

Page 15: Jms topics

Thank You All