1 / 38

Java Message Service

Java Message Service. Sangeetha Chavala. What is Messaging?. Method of Communication between software components/applications peer-to-peer facility Not another Mail API!!!. Messaging System Concepts.

moesha
Download Presentation

Java Message Service

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Message Service Sangeetha Chavala

  2. What is Messaging? • Method of Communication between software components/applications • peer-to-peer facility • Not another Mail API!!!

  3. Messaging System Concepts • Allows loosely coupled applications to communicate - contrast with RPC • Asynchronous • Reliable

  4. Messaging Systems Advantages • Platform &Network Location Independence • Flexibility • Scalability • Anonymity • Robustness • Asynchronous

  5. 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

  6. Common Models of Messaging • Point-to-Point • Publish/Subscribe

  7. Point-to-Point Messaging • Only one consumer of Queue Message • No timing dependencies between Sender and Receiver

  8. Publish/Subscribe Messaging • Broadcast Message to all Subscribers

  9. JMS Application • JMS Provider • JMS Clients • Messages • Administered Objects • Non-JMS Clients

  10. Messages Message Components • Header • Properties • Body

  11. 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

  12. Message Properties • Application-specific properties • Messaging system provider-specific properties • Optional fields • Properties are Name/Value pairs • Values can be int, string, byte etc

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

  14. 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

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

  16. Example:Creating a Text Message • To create a simple TextMessage: TextMessage message = session . createTextMessage( ); message . setText ( “greetings”);

  17. 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

  18. 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

  19. 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

  20. Create the Connection TopicConnection topicConnection = factory . createTopicConnection ( ) ; • QueueConnection or TopicConnection

  21. 2. Create Sessions TopicSession session = topicConnection . createTopicSession (false, CLIENT_ACKNOWLEDGE); • First parameter controls transactions • Second parameter specifies message acknowledgement

  22. Locate a Topic Topic weatherTopic = messaging . Lookup ( “WeatherData” ) ; • JNDI is used to locate the topic • Queue or Topic

  23. Start the Connection topicConnection . start ( ) ; • During initialization, message flow is inhibited; Connection must now be started before messages will be transmitted

  24. 3. Create Message Producer TopicPublisher publisher = session . createPublisher (weatherTopic) ; • Publisher will publish messages to weathetData topic

  25. Publish a Message TextMessage message = session . createMessage ( ) ; message . setText ( “text : 35 degrees” ) ; publisher . Publish (message) ;

  26. Specifying Quality of Service Publish (Message message, int deliveryMode, int priority, long timeToLive) ; • Delivery Modes - NON-PERSISTENT - PERSISTENT • Priority • Time-to-Live

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

  28. Asynchronous Message Receipt • Uses Listening Mechanism setMessageListener (MessageListener listener) • Listener object must implement onMessage ( ) of MessageListener interface

  29. Synchronous Message Receipt Message receive ( ) ; Message receive (long timeout) ; Message receiveNoWait ( ) ;

  30. Point-to-Point Programming • Queue Browsing - session . createBrowser (Queue queue); - session . createBrowser (QueueSession session, Queue queue, String messageSelector) ;

  31. JMS Programming Techniques and Issues 1. Transactions - commit( ) ; - rollback( ) ; with respect to producer with respect to consumer 2. Programmatic Message Acknowledgement acknowledge ( );

  32. JMS Programming Techniques and Issues 3. 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

  33. 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) ;

  34. 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

  35. 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’

  36. JMS Implementations • Standalone messaging servers • JMS services embedded within other environments such as an application server

  37. 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

  38. Topics discussed • Messaging System Concepts • JMS Features • JMS Programming Techniques • JMS and XML as an Integration platform

More Related