jms intro
DESCRIPTION
TRANSCRIPT
M
D 1
Java Messaging Service (JMS)
M
D 2
Objectives
• Understand strategies for computer-to-computer messaging
• Understand how vendors attempt to lock-in customers using proprietary communication APIs
• Understand why the Java Messaging Service (JMS) is becoming the de-facto vendor-neutral messaging interface between J2EE systems and how JMS helps avoid vendor lock-in
• Understand the differences between messaging systems
• Understand how messaging systems interoperate
• Understand how JMS fits in with other EAI architectures such as Web Services, SOA, ESB, Multi-tier architectures, J2EE Architecture, JCA, Microsoft BizTalk, RosettaNet
• Understand how future systems will interoperate
• Review references
M
D 3
Messaging Strategy Overview
1. Support cost effective reliable messaging between state law enforcement agencies
2. Allow messages to have guaranteed delivery and be fully encrypted
3. Avoid vendor-specific APIs
4. Integrate with search and workflow
5. Be flexible for future standards
6. Make it easy for developers to use
M
D 4
Vendor Lock-In
• Definition: When you spend a lot of time and money building your products around a specific vendor's solution.
• Vendor lock-in prevents you from moving your application to another vendor or an open-source solution
– Vendor lock-in is Bad
– Portability between vendors is Good• Successful Enterprise Architecture Strategies attempt
to minimize dependencies on any product due to:– Excessive licensing fees
– Excessive support fees
– Vendor support for a specific product
– Vendor stability
M
D 5
Application Portability
• To promote portability and prevent vendor lock-in, whenever there is a choice between a vendor-neutral-industry-standard service interface and a vendor specific interface, always use the vendor-neutral standard unless you have a BUSINESS REASON to use the vendor specific interface
Application
Service
VendorNeutralService
Interface
VendorSpecificService
Interface
M
D 6
What is A Message?• A communication between two things
(people, computers)
• Typical questions:– Who was the message from?
– What is the destination?
– Was the message actually received by the recipient?
– Was it understood? (what restaurant?, 8am or 8pm?)
– Should it be acknowledged?
– Could it have been tampered with in transit?
– Who really sent it?
Joe,
Lets meet for lunch atthe restaurant at 8.
- John
M
D 7
Definition
Messaging: a method of communication between software components or applications– E-mail is also messaging but it is person to
person– In this tutorial, messaging is computer to
computer
M
D 8
Messaging System
• A Messaging System is a peer-to-peer facility to allow any number computer applications to communicate with each other
• A messaging application can send messages to, and receive messages from, any other application
• Each client connects to a messaging interface that provides facilities for creating, sending, receiving, and reading messages.
Application
Interface
Application
Interface
M
D 9
Messaging Clients
• A Messaging Client is a system that handles the communication between the application interface and the physical network
• A client can be either an open-source product or a commercial product
• Clients deal with issues such as how to send a message over an unreliable network
Application
Interface
Application
Interface
Client Client
M
D 10
Store and Forward
• Messaging clients deal with issues such as how to send a message over an unreliable network with guaranteed security once-and only-once-delivery so that messages can be part of reliable distributed transactions (ACID)
Application
Interface
Application
Interface
Client Client
MessageServer
Store &Forward
MessageServer
Store &Forward
Unreliable Network
Unreliable Network
M
D 11
Java Transaction API
• Java Transactions are handled by the Java Transaction API (JTA)
• The JTA makes it easy for Java programmers to do complex transactions involving data on multiple J2EE systems located over a wide area network (WAN)
• JTA depends on Messages Beans (MBean) and therefore JMS
• JTA makes ACID transactions possible
M
D 12
ACID Test
• Atomicity – all or nothing – a transaction either completely succeeds or it completely fails – nothing in between
• Consistency – meet constraints of endpoints such as non-duplicate ID numbers
• Isolation – each transaction has a consistent view of the world
• Durability – once committed the transaction will endure regardless of single component failure
M
D 13
A Wire Protocol
• A wire protocol is an agreed upon standard between two systems (potentially built with different technologies) that defines how they will communicate with each other
Format of messages "on the wire"
Examples: HTTP (web), SMTP (mail), SNMP (monitoring) and SOAP
M
D 14
System Coupling
• TIGHT: Systems that are very rigid in their requirements
• System 2 MUST respond to a message before System 1 can proceed to the next activity
• LOOSE: Where programmers just send a message and can be assure the infrastructure will do whatever it needs to do send the message
System 1 System 2
System 1 System 2
Tight Coupling
Loose Coupling
M
D 15
Tightly Coupled Communications
• Sender needs a remote service and calls a remote procedure call• The sending process “Stops” and waits for a reply• Synchronous messaging – don’t proceed till we are synchronized up• The sender will “freeze” if the network is down or the sender will have to
manually keep trying till the remote system is up and it gets a response• Remote procedure call (RPC), Java Remote Method Invocation (RMI)
System 1
Unreliable Network
Unreliable Network
System 2
M
D 16
Loosely Coupled Communications
• Programmers just “fire and forget”• There is no “blocking” of sender’s process• System 1 just gets a reply message when the data request has been received• System can transmit messages to remote systems even when the remote system is down or
the network has failed. Messages wait patiently in the queue till the network is back up.• System administrators can monitor the message queues and be notified of congestions• High priority messages can take precedence over large, batch transfers
System 1
Unreliable Network
Unreliable Network
System 2
MessageQueue
MessageQueue
M
D 17
Application Program Interface (API)• A formal set of interfaces definitions used by programmers
• Usually a specified in SPECIFIC language such as Java or C
• Java Messaging Service (JMS) is an API
• JMS was designed to be a wrapper API around existing messaging systems
J2EEApplication(JMS Client)
JMS Provider
JMS API
J2EEApplication(JMS Client)
JMS Provider
JMS API
Messaging System
M
D 18
APIs Promote Portability
• Applications DO NOT call an vendor interface directly
• Applications call the industry standard and let the transport mechanism move the data
Sun Certified J2EE 1.3+Application Server
JMS Interface
Application
Transport Mechanism
Vendor Interface
M
D 19
JMS is part of J2EE
• In order to be a Sun-certified J2EE 1.3+ compliant, the application server MUST support the JMS interface (1.2 was only recommended)
• Any object can use the JMS API
• JMS is THE default application server messaging interface
Sun Certified J2EE 1.3+Application Server
JMS Interface
Transport Mechanism
Application
M
D 20
JMS Details
• JMS is a Messaging API Specification
• Published and maintained by Sun Microsystems
• First published in August 1998.
• Latest version is Version 1.0.2b
• See http://java.sun.com/products/jms/
M
D 21
Goals of JMS
• Minimizes the set of concepts a programmer must learn to use messaging products (programmer friendly)
• Provides enough features to support sophisticated messaging applications
• Maximize the portability of JMS applications across JMS providers in the same messaging domain
M
D 22
Benefits of JMS
• Simplifies enterprise development
• Allows loosely coupled systems (systems that don't block each other)
• Provides reliable messaging over an unreliable network
• Promotes secure messaging between systems
• Messages between JMS systems can be encrypted
M
D
When to Use a JMS Interface?
• The provider wants the components not to depend on information about other components' interfaces, so that components can be easily replaced
• The provider wants the application to run whether or not all components are up and running simultaneously
• The application business model allows a component to send information to another and to continue to operate without receiving an immediate response
M
D 24
Asynchronous Messaging
• Ways that objects communicate
• A service of the underlying operating system
• Allows programmers to “fire and forget”
M
D
Message Brokers
Use of a broker will reduce these integration costs by one-third. During maintenance, when a single change to an application can have a rippling effect on several to several dozen interfaces, use of a broker can reduce costs by two-thirds.“
- Gartner Group
M
D
Messaging Benefits
• Messaging infrastructure guarantees reliable delivery of a message
• Once and only once delivery
• Messages can have different priority
• Transactional control
• Transactions can be grouped together
• Support of “undo” – reversible operations
M
D
Similar to E-mail
Header:Header:To: From: Subject:
Priority: Urgent
To: From: Subject:Priority: Urgent
BodyBody
Recipientse-MailServer
OutgoingMail
Server
M
D
When we send e-mail…
• Sender sends a message to the outgoing e-mail server using a standard format ( e.g. Simple Mail Transfer Protocol)
• Message is routed to receiver’s e-mail server
• Message stored in e-mail server till the receiver picks up the message
• Example of asynchronous processing
M
D
Message Structure
HeaderHeader
PropertiesProperties
BodyBody
M
D
Object to Object Messaging
HeaderHeader
PropertiesProperties
BodyBody
MessageQueue
M
D
Header
• Identify message• Destination• Routing Information• Priority• Timestamp• Reply to• Message type
HeaderHeader
PropertiesProperties
BodyBody
M
D
Properties
• Added by the application developer
• Application specific properties
• Key-value pairs– KEYWORD=VALUE
• Extensions for messaging systems
HeaderHeader
PropertiesProperties
BodyBody
M
D
Body
• Message body• Can contain arbitrary data
types– Text messages
– Map (key-value pairs)
– XML
– Serialized objects (Java)
– Binary data
– Empty
HeaderHeader
PropertiesProperties
BodyBody
M
D
Message Example
To: My Enterprise Service BusTo: My Enterprise Service Bus
TransactionNumber=12345TransactionNumber=12345
<?xml version="1.0"?><RequestedAction>Person Search</RequestedAction><Person> <PersonSurName>Jones</PersonSurName> <PersonGivenName>Sam</PersonGivenName> <PersonBirthDate>1980-12-31</PersonBirthDate></Person>
<?xml version="1.0"?><RequestedAction>Person Search</RequestedAction><Person> <PersonSurName>Jones</PersonSurName> <PersonGivenName>Sam</PersonGivenName> <PersonBirthDate>1980-12-31</PersonBirthDate></Person>
M
D
JMS Modes
• One-to-one (aka Point-to-point)– Send a message to a JMS Queue
– One message reader
• One-to-Many (aka Publish-subscribe)– Send (publish) message to a JMS Topic
– Enables many readers (subscribers)
– Also enables many-to-many subscription
Queue
Message
Receiver
Sender
Topic
Message
Subscriber
Sender
Subscriber
M
D 36
Required Header Types
• Automatic – automatically put in EVERY message by the system
• Developer-Assigned – required headers that must be set before a send()
M
D 37
Automatic Header Information
• Destination – where to send the message (either a queue or a topic)
• DeliveryMode – reliable or not• MessageID – number that identifies the message• Timestamp – date and time that send() was called• Expiration – time to live in milliseconds – by
default is does not expire• Redelivered – not the first try• Priority – Should this message be expedited?
M
D 38
Priority Messages
• The JMS API defines ten levels of priority value
• 0 as the lowest priority
• 9 as the highest
• 0-4 are gradations of normal priority and priorities
• 5-9 are gradations of expedited priority