O'Reilly - Java Message Service
O'Reilly - Java Message Service
O'Reilly - Java Message Service
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 7. Deployment Considerations<br />
<strong>Java</strong> <strong>Message</strong> <strong>Service</strong><br />
An enterprise application's performance, scalability, and reliability should be among the<br />
foremost concerns in a real deployment environment. The underlying messaging<br />
middleware is critical to that environment.<br />
7.1 Performance, Scalability, and Reliability<br />
Every JMS vendor claims to be the fastest in the marketplace. Some claim to be fast and<br />
scalable to thousands of clients. It is hard to take any one vendor's word for having the<br />
fastest and most scalable product. Different application architectures have different<br />
demands. The industry has no accepted messaging benchmark. Thus, the proof of any<br />
vendor's claims lies in your own testing and measurement.<br />
Performance and scalability are terms commonly used together, but they are not<br />
interchangeable. Performance refers to the speed at which the JMS provider can process a<br />
message through the system from the producer to the consumer. Scalability refers to the<br />
number of concurrently connected clients that a JMS provider can support. When used<br />
together, the terms refer to the effective rate at which a JMS provider can concurrently<br />
process a large volume of messages on behalf of a large number of simultaneously<br />
connected producers and consumers. The distinction between performance and scalability,<br />
as well as the implications of what it means to combine them, is very important, as you<br />
will soon see. A simple test using one or two clients will differ drastically from a test using<br />
hundreds or thousands of clients. The following section is intended to be used as a guide to<br />
help with performance and scalability testing.<br />
7.1.1 Determining <strong>Message</strong> Throughput Requirements<br />
Before you embark on your performance and scalability testing effort, consider what you<br />
are trying to accomplish. Since any particular vendor may do well with one scenario and<br />
not so well in others, the makeup of your application is important to define. Here are some<br />
key things to consider:<br />
• The potential size of the user community for your application. While this may be<br />
hard to project, it is important to try to predict how it will grow over time.<br />
• The average load required by the application. Given a total size of the user<br />
community for your application, how many are going to be actively using it at any<br />
given time?<br />
• The peak load required by the application. Are there certain times of the day, or<br />
certain days in a month, when the number of concurrent users will surge?<br />
• The number of JMS client connections used by the application. In some cases, the<br />
number of JMS clients does not correspond to the number of application users.<br />
Middleware products, such as EJB servers, share JMS connections across<br />
application clients, requiring far fewer JMS client connections than other<br />
applications. On the other hand, some applications use multiple JMS connections<br />
per client application, requiring more JMS client connections than users. Knowing<br />
the ratio of users to JMS clients helps you determine the number of messages being<br />
processed per client.<br />
108