<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
        <title>Apache JMeter
          -
          User's Manual: Building a JMS (Java Messaging Service) Point-to-Point Test Plan</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
        <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
        <link rel="stylesheet" type="text/css" href="../css/new-style.css">
        <link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon.png">
        <link rel="icon" href="../images/favicon.png">
        <meta name="msapplication-TileColor" content="#ffffff">
        <meta name="msapplication-TileImage" content="../images/mstile-144x144.png">
        <meta name="theme-color" content="#ffffff">
    </head>
    <body role="document">
        <a href="#content" class="hidden">Main content</a>
        <div class="header">
            <!--
            APACHE LOGO
          -->
            <div>
                <a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="../images/asf-logo.svg" alt="Logo ASF"></a>
            </div>
            <!--
              PROJECT LOGO
            -->
            <div>
                <a href="https://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a>
            </div>
            <div class="banner">
                <a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
                <div class="clear"></div>
            </div>
        </div>
        <div class="nav">
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">About</div>
                    <ul>
                        <li>
                            <a href="../index.html">Overview</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/licenses/">License</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Download</div>
                    <ul>
                        <li>
                            <a href="../download_jmeter.cgi">Download Releases</a>
                        </li>
                        <li>
                            <a href="../changes.html">Release Notes</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Documentation</div>
                    <ul>
                        <li>
                            <a href="../usermanual/get-started.html">Get Started</a>
                        </li>
                        <li>
                            <a href="../usermanual/index.html">User Manual</a>
                        </li>
                        <li>
                            <a href="../usermanual/best-practices.html">Best Practices</a>
                        </li>
                        <li>
                            <a href="../usermanual/component_reference.html">Component Reference</a>
                        </li>
                        <li>
                            <a href="../usermanual/functions.html">Functions Reference</a>
                        </li>
                        <li>
                            <a href="../usermanual/properties_reference.html">Properties Reference</a>
                        </li>
                        <li>
                            <a href="../changes_history.html">Change History</a>
                        </li>
                        <li>
                            <a href="../api/index.html">Javadocs</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Tutorials</div>
                    <ul>
                        <li>
                            <a href="../usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
                        </li>
                        <li>
                            <a href="../usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_tutorial.html">Extending JMeter</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Community</div>
                    <ul>
                        <li>
                            <a href="../issues.html">Issue Tracking</a>
                        </li>
                        <li>
                            <a href="../security.html">Security</a>
                        </li>
                        <li>
                            <a href="../mail.html">Mailing Lists</a>
                        </li>
                        <li>
                            <a href="../svnindex.html">Source Repositories</a>
                        </li>
                        <li>
                            <a href="../building.html">Building and Contributing</a>
                        </li>
                        <li>
                            <a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Foundation</div>
                    <ul>
                        <li>
                            <a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
                        </li>
                        <li>
                            <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
        <div class="main" id="content">
            <div class="social-media">
                <ul class="social-media-links">
                    <li class="twitter">
                        <a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
                    </li>
                    <li class="github">
                        <a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
                    </li>
                </ul>
            </div>
            <ul class="pagelinks">
                <li>
                    <a href="build-ws-test-plan.html">&lt; Prev</a>
                </li>
                <li>
                    <a href="../index.html">Index</a>
                </li>
                <li>
                    <a href="build-jms-topic-test-plan.html">Next &gt;</a>
                </li>
            </ul>
            <div class="section">
                <h1 id="building">
                    10. Building a JMS Point-to-Point Test Plan<a class="sectionlink" href="#building" title="Link to here">&para;</a>
                </h1>
                        
                <div class="clear"></div>
                <div class="note">
                                Make sure the required jar files are in JMeter's <span class="code">lib</span> directory. If they are not, shutdown JMeter,
            copy the jar files over and restart JMeter.
            See <a href="get-started.html#libraries_activemq">Getting Started</a> for details.
        
                </div>
                <div class="clear"></div>
                            
                <p>
                    In this section, you will learn how to create a
                <a href="build-test-plan.html">Test Plan</a> to test a JMS Point-to-Point messaging solution.
The setup of the test is 1 threadgroup with 5 threads sending 4 messages each through a request queue.
A fixed reply queue will be used for monitoring the reply messages.
To construct the Test Plan, you will use the
following elements:
                <a href="test_plan.html#thread_group">Thread Group</a>,
                <a href="../usermanual/component_reference.html#JMS_Point-to-Point">JMS Point-to-Point</a>, and
                <a href="../usermanual/component_reference.html#Graph_Results">Graph Results</a>.
            
                </p>
                            
                <p>
                    General notes on JMS: There are currently two JMS samplers. One uses JMS topics
and the other uses queues. Topic messages are commonly known as pub/sub messaging.
Topic messaging is generally used in cases where a message is published by a producer and
consumed by multiple subscribers.  A JMS sampler needs the JMS implementation jar files;
for example, from Apache ActiveMQ.  See <a href="get-started.html#libraries_activemq">here</a> for the list
of jars provided by ActiveMQ.
                </p>
                        
            </div>
            <div class="section">
                <h1 id="adding_threadgroup">
                    10.1 Adding a Thread Group<a class="sectionlink" href="#adding_threadgroup" title="Link to here">&para;</a>
                </h1>
                            
                <p>
                    The first step you want to do with every JMeter Test Plan is to add a
                <a href="test_plan.html#thread_group">Thread Group</a> element.  The Thread Group tells
JMeter the number of users you want to simulate, how often the users should send
requests, and the how many requests they should send.
            
                </p>
                            
                <p>
                    Go ahead and add the ThreadGroup element by first selecting the Test Plan,
clicking your right mouse button to get the <span class="menuchoice"><span class="guimenuitem">Add</span></span> menu, and then select
<span class="menuchoice"><span class="guimenuitem">Add</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">ThreadGroup</span></span>.
                </p>
                            
                <p>You should now see the Thread Group element under Test Plan.  If you do not
see the element, then "expand" the Test Plan tree by clicking on the
Test Plan element.</p>
                            
                <p>Next, you need to modify the default properties.  Select the Thread Group element
in the tree, if you have not already selected it. You should now see the Thread
Group Control Panel in the right section of the JMeter window (see Figure 10.1
below)</p>
                            
                <figure>
                    <a href="../images/screenshots/webtest/threadgroup.png"><img src="../images/screenshots/webtest/threadgroup.png" width="" height="" alt="
Figure 10.1. Thread Group with Default Values"></a>
                    <figcaption>
Figure 10.1. Thread Group with Default Values</figcaption>
                </figure>
                            
                <p>
                    Start by providing a more descriptive name for our Thread Group. In the name
field, enter <span class="code">Point-to-Point</span>.
                </p>
                            
                <p>
                    Next, increase the number of users (called threads) to <span class="code">5</span>.
                </p>
                            
                <p>In the next field, the Ramp-Up Period, leave set the value to 0
seconds.  This property tells JMeter how long to delay between starting each
user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will
finish starting all of your users by the end of the 5 seconds.  So, if we have
5 users and a 5 second Ramp-Up Period, then the delay between starting users
would be 1 second (5 users / 5 seconds = 1 user per second).  If you set the
value to 0, then JMeter will immediately start all of your users.</p>
                            
                <p>
                    Clear the checkbox labeled "<span class="code">Forever</span>", and enter a value of <span class="code">4</span> in the Loop
Count field.  This property tells JMeter how many times to repeat your test.
If you enter a loop count value of <span class="code">0</span>, then JMeter will run your test only
once. To have JMeter repeatedly run your Test Plan, select the <span class="code">Forever</span>
checkbox.
                </p>
                            
                <div class="clear"></div>
                <div class="note">In most applications, you have to manually accept
changes you make in a Control Panel.  However, in JMeter, the Control Panel
automatically accepts your changes as you make them.  If you change the
name of an element, the tree will be updated with the new text after you
leave the Control Panel (for example, when selecting another tree element).</div>
                <div class="clear"></div>
                        
            </div>
            <div class="section">
                <h1 id="adding_point_to_point_sampler">
                    10.2 Adding JMS Point-to-Point Sampler<a class="sectionlink" href="#adding_point_to_point_sampler" title="Link to here">&para;</a>
                </h1>
                            
                <p>
                    Start by adding the sampler <a href="../usermanual/component_reference.html#JMS_Point-to-Point">JMS Point-to-Point</a>
to the Point-to-Point element
(<span class="menuchoice"><span class="guimenuitem">Add</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Sampler</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">JMS Point-to-Point</span></span>).
Then, select the JMS Point-to-Point sampler element in the tree.
 In building the example a configuration will be provided that works with ActiveMQ 3.0.
            
                </p>
                            
                <p>
                                    
                    <table>
                                            
                        <thead></thead>
                                            
                        <tr>
                                                    <th>Name</th>
                        <th>Value</th>
                        <th>Description</th>
                    
                        </tr>
                                            
                        <tbody></tbody>
                                            
                        <tr>
                                                    <th colspan="3">JMS Resources</th>
                    
                        </tr>
                                            
                        <tr>
                                                    <td colspan="1">QueueConnectionFactory</td>
                        <td><span class="code">ConnectionFactory</span></td>
                        <td> This is the default JNDI entry for the connection factory within ActiveMQ.</td>
                    
                        </tr>
                                            
                        <tr>
                                                    <td>JNDI Name Request Queue</td>
                        <td><span class="code">Q.REQ</span></td>
                        <td>This is equal to the JNDI name defined in the JNDI properties.</td>
                    
                        </tr>
                                            
                        <tr>
                                                    <td>JNDI Name Reply Queue</td>
                        <td><span class="code">Q.RPL</span></td>
                        <td>This is equal to the JNDI name defined in the JNDI properties.</td>
                    
                        </tr>
                                            
                        <tr>
                                                    <th colspan="3">Message Properties</th>
                    
                        </tr>
                                            
                        <tr>
                                                    <td colspan="1">Communication Style</td>
                        <td><span class="code">Request Response</span></td>
                        <td>This means that you need at least a service running outside of JMeter and that will respond to the requests.
                        This service must listen to the Request Queue and send messages to the queue referenced by the <span class="code">message.getJMSReplyTo()</span></td>
                    
                        </tr>
                                            
                        <tr>
                                                    <td>Content</td>
                        <td><span class="code">test</span></td>
                        <td>This is just the content of the message.</td>
                    
                        </tr>
                                            
                        <tr>
                                                    <td>JMS Properties</td>
                        <td></td>
                        <td>Nothing needed for ActiveMQ.</td>
                    
                        </tr>
                                            
                        <tr>
                                                     <th colspan="3">JNDI Properties</th>
                     
                        </tr>
                                             
                        <tr>
                                                    <td colspan="1">InitialContextFactory</td>
                        <td><span class="code">org.apache.activemq.jndi.ActiveMQInitialContextFactory</span></td>
                        <td>The standard InitialContextFactory for ActiveMQ</td>
                    
                        </tr>
                                            
                        <tr>
                                                    <th colspan="3"> Properties</th>
                    
                        </tr>
                                            
                        <tr>
                                                    <td colspan="1"><span class="code">queue.Q.REQ</span></td>
                        <td><span class="code">example.A</span></td>
                        <td>This defines a JNDI name <span class="code">Q.REQ</span> for the request queue that points to the queue <span class="code">example.A</span></td>
                    
                        </tr>
                                            
                        <tr>
                                                    <td colspan="1"><span class="code">queue.Q.RPL</span></td>
                        <td><span class="code">example.B</span></td>
                        <td>This defines a JNDI name <span class="code">Q.RPL</span> for the reply queue that points to the queue <span class="code">example.B</span></td>
                    
                        </tr>
                                            
                        <tr>
                                                    <th colspan="3">Provider URL</th>
                    
                        </tr>
                                            
                        <tr>
                                                    <td colspan="1">Provider URL</td>
                        <td><span class="code">tcp://localhost:61616</span></td>
                        <td>This defines the URL of the ActiveMQ messaging system.</td>
                    
                        </tr>
                                        
                    </table>
                                
                </p>
                        
            </div>
            <div class="section">
                <h1 id="adding_listener">
                    10.3 Adding a Listener to View Store the Test Results<a class="sectionlink" href="#adding_listener" title="Link to here">&para;</a>
                </h1>
                            
                <p>
                    The final element you need to add to your Test Plan is a
                <a href="component_reference.html#listeners">Listener</a>. This element is
responsible for storing all of the results of your JMS requests in a file and presenting
a visual model of the data.
            
                </p>
                            
                <p>
                    Select the Thread Group element and add a
                <a href="../usermanual/component_reference.html#Graph_Results">Graph Results</a> listener
(<span class="menuchoice"><span class="guimenuitem">Add</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Listener</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Graph Results</span></span>).  Next, you need to specify a directory and filename of the
output file.  You can either type it into the filename field, or select the
Browse button and browse to a directory and then enter a filename.
            
                </p>
                            
                <figure>
                    <a href="../images/screenshots/graph_results.png"><img src="../images/screenshots/graph_results.png" width="915" height="686" alt="
Figure 10.2. Graph Results Listener"></a>
                    <figcaption>
Figure 10.2. Graph Results Listener</figcaption>
                </figure>
                        
            </div>
            <ul class="pagelinks">
                <li>
                    <a href="build-ws-test-plan.html">&lt; Prev</a>
                </li>
                <li>
                    <a href="../index.html">Index</a>
                </li>
                <li>
                    <a href="build-jms-topic-test-plan.html">Next &gt;</a>
                </li>
            </ul>
            <div class="share-links">
                      Share this page:
      
                <ul>
                    <li class="fb">
                        <a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
                    </li>
                    <li class="twitter">
                        <a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
                    </li>
                </ul>
            </div>
            <a href="#top" id="topButton">Go to top</a>
        </div>
        <div class="footer">
            <div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2024
            , Apache Software Foundation
          </div>
            <div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
        </div>
        <script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
    </body>
</html>
