Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software...

38
Java Message Service Sangeetha Chavala

Transcript of Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software...

Page 1: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Java Message Service

Sangeetha Chavala

Page 2: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

What is Messaging? Method of Communication

between software components/applications

peer-to-peer facility Not another Mail API!!!

Page 3: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Messaging System Concepts Allows loosely coupled applications

to communicate - contrast with RPC

Asynchronous Reliable

Page 4: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Messaging Systems Advantages Platform &Network Location

Independence Flexibility Scalability Anonymity Robustness Asynchronous

Page 5: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

What is the JMS API? A common JavaTM platform API for

creating, sending, receiving and reading messages

Design Goals

-Provides most of the functionality of common messaging systems

-makes client applications portable across messaging products

- Leverages Java Technology

Page 6: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Common Models of Messaging

Point-to-Point Publish/Subscribe

Page 7: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Point-to-Point Messaging Only one consumer of Queue

Message No timing dependencies between

Sender and Receiver

Page 8: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Publish/Subscribe Messaging Broadcast Message to all

Subscribers

Page 9: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

JMS Application JMS Provider JMS Clients Messages Administered Objects Non-JMS Clients

Page 10: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Messages

Message Components

Header Properties Body

Page 11: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Message Header Used for Message Identification and Routing Destination Field -includes Subject or Topic (for Pub/Sub) -queue(for point-to-point) Also include other data -delivery mode -message ID -timestamp -priority -ReplyTo

Page 12: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Message Properties Application-specific properties Messaging system provider-

specific properties Optional fields Properties are Name/Value pairs Values can be int, string, byte etc

Page 13: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Message Body Holds content of message Five Types supported Each type defined by a message interface -StreamMessage -MapMessage -BytesMessage -TextMessage -ObjectMessage

Page 14: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Message Body Interfaces StreamMessage -contains Java primitive values -Read sequentially MapMessage -Holds name/value pairs -Read sequentially or by name BytesMessage -uninterpreted bytes -used to match an existing message

format

Page 15: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Message Body Interfaces TextMessage -contains java.util.StringBuffer -useful for XML messages ObjectMessage -contains arbitrary java object -must be serializable

Page 16: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Example:Creating a Text Message To create a simple TextMessage:

TextMessage message = session .

createTextMessage( ); message . setText ( “greetings”);

Page 17: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Building a JMS Client Steps 1) Create a Connection to the

provider 2) Create Sessions to

send/receive messages 3) Create MessageProducers 4) Create MessageConsumers

Page 18: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

1. Creating a Connection Connection provides access to

messaging system Performs resource allocation and

management ConnectionFactory used to create

Connection ConnectionFactory is located

through JNDI

Page 19: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Get the Connection Factory

Context messaging = new InitialContext ( ) ; TopicConnectionFactory factory = (TopicConnectionFactory) messaging . lookup

( “TopicConnectionFactory” ) ;

JNDI is used to get a ConnectionFactory 2 Types ConnectionFactory - QueueConnectionFactory for P-to-P

- TopicConnectionFactory for Pub/Sub

Page 20: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Create the Connection

TopicConnection topicConnection = factory . createTopicConnection

( ) ;

QueueConnection or TopicConnection

Page 21: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

2. Create Sessions

TopicSession session = topicConnection . createTopicSession (false, CLIENT_ACKNOWLEDGE);

First parameter controls transactions Second parameter specifies message

acknowledgement

Page 22: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Locate a Topic

Topic weatherTopic = messaging . Lookup

( “WeatherData” ) ;

JNDI is used to locate the topic Queue or Topic

Page 23: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Start the Connection

topicConnection . start ( ) ;

During initialization, message flow is inhibited; Connection must now be started before messages will be transmitted

Page 24: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

3. Create Message Producer

TopicPublisher publisher = session . createPublisher

(weatherTopic) ;

Publisher will publish messages to weathetData topic

Page 25: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Publish a Message

TextMessage message = session . createMessage ( ) ; message . setText ( “text : 35

degrees” ) ; publisher . Publish (message) ;

Page 26: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Specifying Quality of Service

Publish (Message message, int deliveryMode,

int priority, long timeToLive) ; Delivery Modes - NON-PERSISTENT - PERSISTENT Priority Time-to-Live

Page 27: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

4. Message Consumer Subscribing to topics - Durable Subscriptions - Non-durable Subsriptions Receiving Messages - Asynchronous - Synchronous

Page 28: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Asynchronous Message Receipt

Uses Listening Mechanism setMessageListener (MessageListener listener)

Listener object must implement onMessage ( ) of MessageListener

interface

Page 29: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Synchronous Message Receipt

Message receive ( ) ; Message receive (long timeout) ; Message receiveNoWait ( ) ;

Page 30: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Point-to-Point Programming

Queue Browsing - session . createBrowser (Queue

queue); - session . createBrowser

(QueueSession session, Queue queue, String messageSelector) ;

Page 31: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

JMS Programming Techniques and Issues

1. Transactions - commit( ) ; - rollback( ) ; with respect to producer with respect to consumer2. Programmatic Message

Acknowledgement acknowledge ( );

Page 32: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

JMS Programming Techniques and Issues3. Message Routing - Routing via Hierarchical Topics bid_request bid_request.vehicles bid_request.vehicles.bicycle - Routing via Message Selection Property_MerchType = ‘Mountain Bike’

AND Property_ReqOvernight is NULL Selecting a Routing Approach

Page 33: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Using JMS to Transport XML

StringBuffer body = new StringBuffer ( ) ;body.append (“?xml version=\”1.0\ “?>\n”) ;body.append (“<message>\n”);body.append

(“<sender>”+username+“</sender>\n”) ;body.append (“<content>”+s+ “</content>\

n”) ;body.append (“</message>\n”) ;msg.setText (body.toString( )) ;publisher . Publish (msg) ;

Page 34: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Consuming XML Messages Work with XML payload as a text

stream Work with the XML payload

through the DOM Use SAX to process the XML in an

event-based manner

Page 35: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Performing XML-based Routing - Use Message Properties

Request-Reply Programming - Replies are sent as full JMS message typically following some processing

in the called ‘client’

Page 36: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

JMS Implementations Standalone messaging servers

JMS services embedded within other environments such as an application server

Page 37: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

JMS and XML as an Integration Platform

Integration Types - Data Integration - Procedural or Process Integration Messaging simplifies Application

Integration - can’t use Objects - XML proves to be an optimal

format

Page 38: Java Message Service Sangeetha Chavala. What is Messaging? Method of Communication between software components/applications peer-to-peer facility Not.

Topics discussed Messaging System Concepts JMS Features JMS Programming Techniques JMS and XML as an Integration

platform