Download presentation
Presentation is loading. Please wait.
1
Java Messaging Service Notes prepared from GBC Professional Development Seminar :Understanding the Java Messaging Service David Chappell & Rick Kuzyk, Sonic Software.
2
Messaging Data exchange requirements between disparate applications –B2C components (and clients) catalogs order payment fulfillment support
3
Messaging Data exchange requirements between disparate applications –B2B components (and clients) wholesale retail accounts payable and receivable –Disconnected users (mobile, handheld) package delivery maintenance web phones
4
Messaging Data exchange requirements between disparate applications –B2B components (and clients) wholesale retail accounts payable and receivable –Disconnected users (mobile, handheld) package delivery maintenance web phones
5
Enterprise Messaging (MOM) Message oriented middleware (MOM) –Asynchronous messaging; sender need not wait for reply –decoupled sender and receiver—no direct communication –no persistent connection between parties, including MOM
6
Enterprise Message vs RPC Enterprise MessagingRPC AsynchronousSynchronous (Req/Rpy) Tolerates partial failurePartial failure can affect entire application Transparent support for distributed systems Best for single, possibly n-tiered, system Indirect communication through MOM Direct communication between processes Applications decoupledApplications coupled
7
Enterprise messaging Application A Messaging API Messaging Clients Application A Messaging API Messaging Clients MOM
8
App CApp A RPC infrastructure Tightly coupled RPC RPC infrastructure App D RPC infrastructure App B RPC infrastructure n*(n-1)/2 connections
9
JMS Messaging Message server JMS Client Hub and spoke JMS Client Local "server" Router Local "server" Decentralized (IP multicast)
10
JMS JMS Messaging client –Uses the JMS API to create, send, receive messages –Interfaces and classes or the API = client runtime JMS Message server –handles deliver of messages sent by clients to other messaging clients who register an interest JMS provider = JMS client runtime + message server. –supports the JMS API and reliable delivery J2EE provides glue that lets certain objects to run as a JMS messaging client
11
JMS and J2EE These objects can function as JMS messaging clients via J2EE –enterprise beans (EJB) –servlets –JSP pages –J2EE application client message-driven bean: an EJB that can consume JSP messages
12
J2EE Client application EJB Container Application Client Container Web Container J2EE platform JMS Server JDBC Server
13
JMS Client classes ConnectionBinds a JMS client to a message server. multiple per client; associated with either pub/sub or PTP SessionContext for sending/receiving messages; multiple per Connection Producersends messages to Destinations Destinationidentifier for a message Messagepackage sent from a producer to a consumer
14
JMS Client Consumer Connection Session JMS Components JMS Client Producer Connection Session Message server Destination Message
15
JMS Client Consumer JMS Components JMS Client Producer Message server Destination Send Message Consume Message Bind to Destination
16
JMS Client objects Producer –Binds to a destination to send messages –Determines message TTL, priority, persistence Consumer –Binds to a destination to receive messages –Receives messages asynchronously through a message listener or synchronously by polling
17
JMS Client objects Messages –Headers –Property list (some predefined); Consumers can select on properties –Body
18
JMS Message types Message typeBody MessageEmpty TextMessageJava String ObjectMessageSerializable Java object MapMessageName/value pairs StreamMessageStream of Java primitives BytesMessageUninterpreted bytes
19
Messaging Domains Publish and subscribe (pub/sub) –Many consumers per message –Messages have a topic that identifies the relation of publisher to subscriber Point-to-point (PTP, p2p) –One consumer per message –Messages queued. Consumers can browse queue without consuming
20
Pub/Sub model PublisherTopicSubscriber New books HW
21
P2P model SenderQueReceiver Submit Grade hw9 A+ PARTY! res hw9A+res
22
Connections and sessions jndi = new InitialCOntext(env); tFactory = (TopicConnectionFactory)jndi.lookup("TopicConnectionFactory"); qFactory = QueueConnectionFactory)jndi.lookup("QueueConnectionFactory"); tConnect = tFactory.createTopicConnection(unsername, password); qConnect = qFactory.createQueueConnection(unsername, password); tSession = tConnect.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); qSession = qConnect.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); tConnect.start(); qConnect.start();
23
Destinations Pub/sub topics –May be predetermined by server –May be created on a server by a JMS client Topic hw9Topic = tSession.createTopic("hw9"); –May be looked up in a db via Java Naming and Directory Interface (JNDI) Topic hw9Topic (Topic)jndi.lookup("hw9");
24
Destinations P2P queues –Queue must exist in server Queue hwQ = tSession.createQueue("HW"); // or Queue hwQ = (Queue) jndi.lookup("HW");
25
Creating and populating a message Queue Session qSession Text Message textMsg qSession.createTextMessage(); String thisHW="hw9"; textMsg.createContent("GreatJob on" + thisHW);
26
JMS message headers Assigned by system –JMSDestination –JMSDeliveryMode –JMSMessageID –JMSTimestamp –JMSExpiration –JMS Priority Assigned by developer –JMSReplyTo –JMSCorrelationID –JMSType
27
Message properties Name/value pairs assigned by application Values must be Java primitives Setting: message.setStringProperty("studentName", "Nemo"); //prop message.setJMSReplyTo(hw9Q); //header Can filter on props or headers javax.jms.QueueReceiver rcvr = qSession.createReceiver(hw9Q, "JMSPriority > 10");
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.