Transcript
Page 1: Java Message Service (JMS) Web Apps and Services

Java Message Service (JMS)Web Apps and Services

Page 2: Java Message Service (JMS) Web Apps and Services

Messaging Concept JMS Messaging Models JMS Features JMS Application Portal Architecture Action cases State diagram JMS Implementation Performance Portal Performance Summary and Lessons Learned

Content

Page 3: Java Message Service (JMS) Web Apps and Services

Messaging Concept

Message use for loosely coupled distributed communications

Sender and receiver are not necessary on-line at the same time

Java API Package javax.jms

Page 4: Java Message Service (JMS) Web Apps and Services

• Point-to-point

Publish/Subscribe

JMS Messaging Models

Messaging Server

TOPIC

Publisher

Publisher

Publisher

Publisher

Message

Subscriber

Subscriber

Subscriber

Subscriber

Messages

Messaging Server

QUEUE|||||||||||||||

Sender

Sender

Sender

Sender

Message

Receiver

Message

Page 5: Java Message Service (JMS) Web Apps and Services

JMS Features

Persistency Reliability Asynchronous / Synchronous receiver Message body types: text, byte, stream, map

(name/value pair), object

Page 6: Java Message Service (JMS) Web Apps and Services

ConnectionConnection

JMS Application

Session SessionTCP/IP TCP/IP

Publisher or

Sender

Subscriber or

Receiver

Message Asynch or Synch Listener

Destination

(Topic or Queue)

Persistent Storage

Client A Client B

Page 7: Java Message Service (JMS) Web Apps and Services

WebLogic Application Server 5.1 Service Pack 8

JMS Destination

(Queue)

Oracle Database

JDBC connection pool

(thin driver)

JMS Persistent Messages

Stored messages can be read from

database

HTTP services

Java Servlet

JMS Message Producer

News Retrieval Function

Portal Architecture

Submit News

Read News

HTTP Protocol

Web browser

HTTP services

JavaServlet

JMS Message Consumer

News Maintanance

Function

Consumed messages are

stored in database

• Limited to news service

• It uses one server

Page 8: Java Message Service (JMS) Web Apps and Services

WebLogic Application Server 5.1 Service Pack 8

JMS Destination

(Queue)

JDBC connection pool

(thin driver)

Oracle Database

HTTP services

Java Servlet

JMS Message Producer

News Retrieval Function

HTTP services

JavaServlet

JMS Message Consumer

News Maintanance

Function

Case 1: News browsing

Stored messages can be read from

database

Read News

HTTP Protocol

GET

Web browser

Page 9: Java Message Service (JMS) Web Apps and Services

WebLogic Application Server 5.1 Service Pack 8

HTTP services

JavaServlet

JMS Message Consumer

News Maintanance

Function

JMS Destination

(Queue)

HTTP services

Java Servlet

JMS Message Producer

News Retrieval Function

Oracle Database

JDBC connection pool

(thin driver)

Case 2: News submitting

Consumed messages are

stored in database

Submit News

HTTP ProtocolPOST

Web browser

Page 10: Java Message Service (JMS) Web Apps and Services

WebLogic Application Server 5.1 Service Pack 8

JMS Destination(Queue)

Oracle Database

JDBC connection pool

HTTP services

Java Servlet

JMS Message Producer

News Retrieval Function

HTTP services

JavaServlet

JMS Message Consumer

News Maintanance

Function

Case 3: News submitting without listener (Persistent messages)

JMS Persistent Messages

Submit News

HTTP ProtocolPOST

Web browser

Page 11: Java Message Service (JMS) Web Apps and Services

Case 4: Collecting persistent messages after listener recovers

Web Logic Application Server 5.1 Service Pack 8

JMS Destination

(Queue)

HTTP servicesHTTP services

Java Servlet

JMS Message Producer

News Retrieval Function

JDBC connection pool

Oracle Database

JavaServlet

JMS Message Consumer

News Maintanance

Function

Consumed messages are

stored in database

JMS Persistent Messages

Web browser

Page 12: Java Message Service (JMS) Web Apps and Services

State diagram for client

Idle (Servlet)

Servlet call from

web browser Initialization of

servlet andJDBC

connection pool

Database connection and displayingcurrent brief news

Waiting for HTTP request

All objects are closed and destroyed

Server isshut down

Get latest news (GET)Go to next page (GET)Go to previous page (GET)

Displaying complete news

Telling the user, the message is sent

Submit an original news (POST & JMS)

Submit a reply as comment (POST

& JMS)

Look at complete news (POST)

Get latestnews (GET)

Page 13: Java Message Service (JMS) Web Apps and Services

State diagram for listener

Idle (Servlet)

Servlet call from

web browser

The receiver is listening to queue.

- The receiver is closed.- Persistency is active- Stopconsuming messages

Recreate a queue receiver (POST & JMS)

Close the receiver (POST & JMS)

All objects are closed and destroyed

Server isshut down

Get latest news (GET)Go to next page (GET)Go to previous page (GET)

- Stop consuming messages, persistency- The browser displays queue content without consuming messages

Create a queue browser, close the

receiver (POST & JMS)

Close queue browser and

recreate a queue receiver (POST

& JMS)

- Waiting for HTTP request- Receiving messages

asynchronously

Initialization of servlet, JMS and JDBCconection pool

Database connection and displayingcurrent news with all headers/properties

Page 14: Java Message Service (JMS) Web Apps and Services

JMS Implementation on WLS 5.1 SP 8 Performance

Page 15: Java Message Service (JMS) Web Apps and Services

JMS Test Condition

One client connected to server Decoupled for persistent messages Coupled for non-persistent messages Asynchronous receiver Destination: Topic and Queue Text Message: 1000 characters in message body Bytes Message: 1000 byte values in message body Map Message: 500 characters as String, one max value for byte,

short, integer, long, float and double primitive type No news saving operation (neither to files nor database)

Page 16: Java Message Service (JMS) Web Apps and Services

Delivery and Retrieval Time for Persistent Messages Processing

15.818.6Average retrieved messages / second

25.519.1Average delivered messages / second

QueueTopicMap Message

17.619.7Average retrieved messages / second

27.419.2Average delivered messages / second

QueueTopicText Message

15.617.7Average retrieved messages / second

28.620.7Average delivered messages / second

QueueTopicBytes Message

Page 17: Java Message Service (JMS) Web Apps and Services

Delivery and Retrieval Time for Non-Persistent Messages Processing

18.117.9Average retrieved messages / second

29.229.2Average delivered messages / second

QueueTopicMap Message

17.819.3Average retrieved messages / second

28.629.6Average delivered messages / second

QueueTopicText Message

13.813.4Average retrieved messages / second

21.721.5Average delivered messages / second

QueueTopicBytes Message

Page 18: Java Message Service (JMS) Web Apps and Services

JMS-based Portal Performance

Page 19: Java Message Service (JMS) Web Apps and Services

Multiclients test on news portal

12 concurrent clients by WebLoad tool Serialization for read and write methods to avoid database conflict One test agenda for 1 hour duration:

• Go to portal site• Browse news• Submit original news (ca 1 kB size)• Browse news• Look at certain news• Give a comment (ca 1 kB size)• Browse news

Total average round time by 12 clients: 199.76 seconds

Page 20: Java Message Service (JMS) Web Apps and Services

Multiclients test on news portal 1,5, 10, 15, 20, 30 concurrent clients by Web Application

Stress tool (15 minutes test) For 1 client: 4.5 messages/minute

Multiclients response time

0

50000

100000

150000

200000

250000

300000

350000

400000

1 5 10 15 20 30

Number of concurrent clients

Res

po

nse

tim

e (m

ilis

eco

nd

s)

Server overloaded, not complete data acquisition

Page 21: Java Message Service (JMS) Web Apps and Services

Summary JMS defines destination as mediator between sender and receiver to

make decoupling possible. Queue destination gives faster processing time than topic. JMS does not specify how to administer messaging products. JDBC

and database for saving news. The portal relies on JMS persistency feature to avoid messages loss

when partial crash on JMS listener happens. JMS persistency does not help for whole server crash because all

JMS objects fail as well. JMS persistency may help for server clustering. One server for

sender and one server for receiver. JMS is useful for notification, chat program, short message service

with applet use (more interaction and often times to be decoupled).

Page 22: Java Message Service (JMS) Web Apps and Services

Lessons Learned

JAVA + J2EE

Java Message Service (JMS)

Java Servlet

JDBC + Oracle database

JNDI

WebLogic 5.1-7.0

HTML


Recommended