23.07.2013 Views

O'Reilly - Java Message Service

O'Reilly - Java Message Service

O'Reilly - Java Message Service

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!