java message service (jms) web apps and services
TRANSCRIPT
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
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
• 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
JMS Features
Persistency Reliability Asynchronous / Synchronous receiver Message body types: text, byte, stream, map
(name/value pair), object
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
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
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
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
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
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
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)
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
JMS Implementation on WLS 5.1 SP 8 Performance
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)
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
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
JMS-based Portal Performance
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
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
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).
Lessons Learned
JAVA + J2EE
Java Message Service (JMS)
Java Servlet
JDBC + Oracle database
JNDI
WebLogic 5.1-7.0
HTML