jms intro

38
M D 1 Java Messaging Service (JMS)

Upload: rajeev-kumar

Post on 11-Nov-2014

166 views

Category:

Education


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Jms intro

M

D 1

Java Messaging Service (JMS)

Page 2: Jms intro

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

Page 3: Jms intro

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

Page 4: Jms intro

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

Page 5: Jms intro

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

Page 6: Jms intro

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

Page 7: Jms intro

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

Page 8: Jms intro

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

Page 9: Jms intro

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

Page 10: Jms intro

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

Page 11: Jms intro

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

Page 12: Jms intro

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

Page 13: Jms intro

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

Page 14: Jms intro

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

Page 15: Jms intro

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

Page 16: Jms intro

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

Page 17: Jms intro

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

Page 18: Jms intro

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

Page 19: Jms intro

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

Page 20: Jms intro

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/

Page 21: Jms intro

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

Page 22: Jms intro

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

Page 23: Jms intro

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

Page 24: Jms intro

M

D 24

Asynchronous Messaging

• Ways that objects communicate

• A service of the underlying operating system

• Allows programmers to “fire and forget”

Page 25: Jms intro

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

Page 26: Jms intro

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

Page 27: Jms intro

M

D

Similar to E-mail

Header:Header:To: From: Subject:

Priority: Urgent

To: From: Subject:Priority: Urgent

BodyBody

Recipientse-MailServer

OutgoingMail

Server

Page 28: Jms intro

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

Page 29: Jms intro

M

D

Message Structure

HeaderHeader

PropertiesProperties

BodyBody

Page 30: Jms intro

M

D

Object to Object Messaging

HeaderHeader

PropertiesProperties

BodyBody

MessageQueue

Page 31: Jms intro

M

D

Header

• Identify message• Destination• Routing Information• Priority• Timestamp• Reply to• Message type

HeaderHeader

PropertiesProperties

BodyBody

Page 32: Jms intro

M

D

Properties

• Added by the application developer

• Application specific properties

• Key-value pairs– KEYWORD=VALUE

• Extensions for messaging systems

HeaderHeader

PropertiesProperties

BodyBody

Page 33: Jms intro

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

Page 34: Jms intro

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>

Page 35: Jms intro

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

Page 36: Jms intro

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()

Page 37: Jms intro

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?

Page 38: Jms intro

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