1 / 22

Java Messaging System

Java Messaging System. Celsina Bignoli bignolic@smccd.net. Messaging. enables distributed communication that is loosely coupled (as opposed to tightly-coupled, such as RMI ) a component sends a message to a destination, and the consumer can retrieve the message from the destination

jarah
Download Presentation

Java Messaging System

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 MessagingSystem Celsina Bignoli bignolic@smccd.net

  2. Messaging • enables distributed communication that is loosely coupled (as opposed to tightly-coupled, such as RMI) • a component sends a message to a destination, and the consumer can retrieve the message from the destination • the producer and the consumer do not have to be available at the same time • the producer does not need to know anything about the consumer and vice-versa • the producer and the consumer need to know only • message format • what destination to use

  3. RMI vs. Messaging • RMI • Messaging Application (Client) Remote Method Call Application (Server) Application Application Produces Message Consumes Message Application Application Application (Producer) Message Middleware Application (Consumer) • receives messages from one or more message producers • broadcasts these messages to one or more message consumers

  4. Enterprise Messaging Systems • a.k.a. : Message-oriented Middleware (MOM) • facilitate the exchange of messages between software applications over a network. • Products • IBM's MQSeries • BEA's WebLogicJMS service • Sun Microsystems' Sun ONE Message Queue • Sonic's SonicMQ

  5. Java Message Service (JMS) • provides vendor-independent access to enterprise messaging systems • consists of • API defining how to write code for receiving and sending messages • Service Provider Interface (SPI) to plug in JMS provider which knows how to talk to a specific MOM implementation

  6. Definitions • JMS clients: applications that use JMS • JMS provider: the messaging system that handles routing and delivery of messages • JMS application: business system composed of many JMS clients and, generally, one JMS provider • Messages: objects that communicate information between JMS clients a consumer • Administered objects: preconfigured JMS objects created by an administrator for the use of clients: • destinations • connection factories

  7. JMS Messaging Architecture JNDI Namespace Administrative Tool Bind Connection Factory Destination Lookup JMS Client Logical Connection JMS Provider

  8. Point-to-point(PTP) Messaging Domain Msg Queue Msg Sender Receiver Consumes Sends Acknowledges

  9. Publisher/Subscriber (pub/sub) Messaging Domain Msg Topic Subscriber1 Subscribes Msg Delivers Publisher Publishes Msg Subscriber2 Subscribes Delivers

  10. JMS Messaging Domains • Publish/Subscribe • Many message producers communicate to many message consumers • Subscriber register interest into a particular event topic • Publishers create events for a topic • Publishers do not know who the consumers are, the MOM system maintains the subscriber list • Point-to-point • Single consumer for each message • Messages are sent to a queue • Queue can have multiple consumers but each message is consumed only once

  11. Message Consumption Messages can be consumed in either of two ways: • Synchronously • A subscriber or a receiver explicitly fetches the message from the destination by calling the receive method. • The receive method can block until a message arrives or can time out if a message does not arrive within a specified time limit. • Asynchronously • A client can register a message listener with a consumer. • A message listener is similar to an event listener. • Whenever a message arrives at the destination, the JMS provider delivers the message by calling the listener's onMessage method, which acts on the contents of the message

  12. JMS Application Components

  13. Administered Objects • Connection Factories • the object a client uses to create a connection with a provider. • encapsulates a set of connection configuration parameters that has been defined by an administrator. • JNDI API lookup: Context ctx = new InitialContext(); QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) ctx.lookup("QueueConnectionFactory"); • Calling the InitialContext() method with no parameters results in a search for a vendor-specific file named jndi.properties indicating which JNDI API implementation to use and which namespace to use.

  14. Administered Objects • Destinations • A destination is the object a client uses to specify the target of messages it produces and the source of messages it consumes • In the PTP messaging domain, destinations are called queues • In the pub/sub messaging domain, destinations are called topics • In addition to looking up a connection factory, you usually look up a destination: Topic myTopic = (Topic) ctx.lookup("MyTopic");

  15. Administered Objects • Destinations • A destination is the object a client uses to specify the target of messages it produces and the source of messages it consumes • In the PTP messaging domain, destinations are called queues • In the pub/sub messaging domain, destinations are called topics • In addition to looking up a connection factory, you usually look up a destination: Topic myTopic = (Topic) ctx.lookup("MyTopic");

  16. Connections • encapsulates a virtual connection with a JMS provider • represent an open TCP/IP socket between a client and a provider service daemon • You use a connection to create one or more sessions. • Like connection factories, connections come in two forms, implementing either the QueueConnection or the TopicConnection interface. QueueConnection queueConnection = queueConnectionFactory.createQueueConnection(); TopicConnection topicConnection = topicConnectionFactory.createTopicConnection(); • When an application completes, you need to close any connections that you have created. • Failure to close a connection can cause resources not to be released by the JMS provider. • Closing a connection also closes its sessions and their message producers and message consumers.

  17. Sessions • a single-threaded context for producing and consuming messages. • a session provides a transactional context with which to group a set of sends and receives into an atomic unit of work. • use sessions to create message producers, message consumers, and messages. • come in two forms, implementing either the QueueSession or the TopicSession interface. TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

  18. Message Producer • a message producer is an object created by a session and is used for sending messages to a destination. • The PTP form of a message producer implements the QueueSender interface. • The pub/sub form implements the TopicPublisher interface. • example: QueueSender queueSender = queueSession.createSender(myQueue); TopicPublisher topicPublisher = topicSession.createPublisher(myTopic);

  19. Message Consumer • a message consumer is an object created by a session and is used for receiving messages sent to a destination. • a message consumer allows a JMS client to register interest in a destination with a JMS provider. • the JMS provider manages the delivery of messages from a destination to the registered consumers of the destination. • The PTP form of message consumer implements the QueueReceiver interface. • The pub/sub form implements the TopicSubscriber interface. • example: QueueReceiver queueReceiver = queueSession.createReceiver(myQueue); TopicSubscriber topicSubscriber = topicSession.createSubscriber(myTopic);

  20. Message Listener • a message listener is an object that acts as an asynchronous event handler for messages. • implements the MessageListener interface, which contains one method, onMessage() • In the onMessage() method, you define the actions to be taken when a message arrives. • You register the message listener with a specific QueueReceiver or TopicSubscriber by using the setMessageListener() method: TopicListener topicListener = new TopicListener(); topicSubscriber.setMessageListener(topicListener); • After you register the message listener, you call the start method on the QueueConnection or the TopicConnection to begin message delivery. • Once message delivery begins, the message consumer automatically calls the message listener's onMessage() method whenever a message is delivered.

  21. Messages • messages have three parts: • header • contains a number of predefined fields that contain values that both clients and providers use to identify and to route messages • properties (optional) • used for values in addition to those provided by the header fields • body (optional) • allow you to send and to receive data in many different forms depending on the type of message • example: String for TextMessage, Serializable for ObjectMessage

  22. JMS System JMS Driver Client Runtime 2: Create connection JMS Connection Factory JMS Server Queue 1 JMS Connection 3: Create session Queue 2 Topic 1 Serialized Message Comm. 5: Create consumer or producer Client JMS Session 1:Retrieve Connection Factory 4: Lookup JMS Destination JNDI JMS Producer Or JMS Consumer 6: Send or receive message

More Related