Java Message Service (JMS) Web Apps and Services
l Messaging Concept l JMS Messaging Models l JMS Features l JMS Application l Portal Architecture l Action cases l State diagram l JMS Implementation Performance l Portal Performance l Summary and Lessons Learned Content
Messaging Concept l Message use for loosely coupled distributed communications Sender and receiver are not necessary on-line at the same time l Java API Package javax.jms
Point-to-point l Publish/Subscribe JMS Messaging Models Messaging Server TOPIC Publisher Message Subscriber Messages Messaging Server QUEUE ||||||||||||||| Sender Message Receiver Message
JMS Features l Persistency l Reliability l Asynchronous / Synchronous receiver l Message body types: text, byte, stream, map (name/value pair), object
Connection JMS Application Session TCP/IP Publisher or Sender Subscriber or Receiver Message Asynch or Synch Listener Destination (Topic or Queue) Persistent Storage Client AClient 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 Protocol POST 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 Protocol POST Web browser
Case 4: Collecting persistent messages after listener recovers Web Logic Application Server 5.1 Service Pack 8 JMS Destination (Queue) HTTP 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 and JDBC connection pool Database connection and displaying current brief news Waiting for HTTP request All objects are closed and destroyed Server is shut 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 latest news (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 - Stop consuming messages Recreate a queue receiver (POST & JMS) Close the receiver (POST & JMS) All objects are closed and destroyed Server is shut 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 JDBC conection pool Database connection and displaying current news with all headers/properties
JMS Implementation on WLS 5.1 SP 8 Performance
JMS Test Condition l One client connected to server l Decoupled for persistent messages l Coupled for non-persistent messages l Asynchronous receiver l Destination: Topic and Queue l Text Message: 1000 characters in message body l Bytes Message: 1000 byte values in message body l Map Message: 500 characters as String, one max value for byte, short, integer, long, float and double primitive type l No news saving operation (neither to files nor database)
Delivery and Retrieval Time for Persistent Messages Processing Average retrieved messages / second Average delivered messages / second QueueTopicMap Message Average retrieved messages / second Average delivered messages / second QueueTopicText Message Average retrieved messages / second Average delivered messages / second QueueTopicBytes Message
Delivery and Retrieval Time for Non-Persistent Messages Processing Average retrieved messages / second 29.2 Average delivered messages / second QueueTopicMap Message Average retrieved messages / second Average delivered messages / second QueueTopicText Message Average retrieved messages / second Average delivered messages / second QueueTopicBytes Message
JMS-based Portal Performance
Multiclients test on news portal l 12 concurrent clients by WebLoad tool l Serialization for read and write methods to avoid database conflict l 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 l Total average round time by 12 clients: seconds
Multiclients test on news portal l 1,5, 10, 15, 20, 30 concurrent clients by Web Application Stress tool (15 minutes test) l For 1 client: 4.5 messages/minute Server overloaded, not complete data acquisition
Summary l JMS defines destination as mediator between sender and receiver to make decoupling possible. l Queue destination gives faster processing time than topic. l JMS does not specify how to administer messaging products. JDBC and database for saving news. l The portal relies on JMS persistency feature to avoid messages loss when partial crash on JMS listener happens. l JMS persistency does not help for whole server crash because all JMS objects fail as well. l JMS persistency may help for server clustering. One server for sender and one server for receiver. l 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 HTML