Modified: 
websites/production/activemq/content/activemq-performance-module-users-manual.html
==============================================================================
--- 
websites/production/activemq/content/activemq-performance-module-users-manual.html
 (original)
+++ 
websites/production/activemq/content/activemq-performance-module-users-manual.html
 Sat Jun 27 21:23:55 2015
@@ -32,16 +32,6 @@
     </style>
     <![endif]-->
 
-          <link 
href='http://activemq.apache.org/styles/highlighter/styles/shCore.css' 
rel='stylesheet' type='text/css' /> 
-      <link 
href='http://activemq.apache.org/styles/highlighter/styles/shThemeEclipse.css' 
rel='stylesheet' type='text/css' /> 
-      <script 
src='http://activemq.apache.org/styles/highlighter/scripts/shCore.js' 
type='text/javascript'></script> 
-              <script 
src='http://activemq.apache.org/styles/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script> 
-              <script 
src='http://activemq.apache.org/styles/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script> 
-         
-      <script type="text/javascript"> 
-        SyntaxHighlighter.defaults['toolbar'] = false; 
-        SyntaxHighlighter.all(); 
-      </script> 
     
     <title>
     Apache ActiveMQ &#8482; -- ActiveMQ Performance Module Users Manual
@@ -83,26 +73,26 @@
         <tr>
         <td valign="top" width="100%">
 <div class="wiki-content maincontent"><h2 
id="ActiveMQPerformanceModuleUsersManual-RunningMaven2PerformanceTest">Running 
Maven 2 Performance Test</h2><p>This <a shape="rect" class="external-link" 
href="http://maven.apache.org";>Maven 2</a> plugin allows you to run performance 
tests easily using the Maven command line or run tests automatically in <a 
shape="rect" class="external-link" 
href="http://maven.apache.org/continuum/";>Continuum</a></p><h3 
id="ActiveMQPerformanceModuleUsersManual-Prerequisites">Prerequisites</h3><p>Starting
 with ActiveMQ 5.5 and above the plugin can be obtained from maven or if you 
download the src from SVN you can build it yourself. Start with a complete 
build of Apache ActiveMQ and then do</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[cd activemq-tooling
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[cd activemq-tooling
 mvn clean install
 ]]></script>
 </div></div><p>To run the following Maven goals make sure you are inside a 
Maven2 project directory where its POM is enabled with the Maven2 
plugin.</p><h3 id="ActiveMQPerformanceModuleUsersManual-Gettingstarted">Getting 
started</h3><p>To get started, switch to the <a shape="rect" 
class="external-link" 
href="http://svn.apache.org/repos/asf/activemq/sandbox/activemq-perftest/";>activemq-perftest
 directory from the sandbox repo,</a> or to a directory containing your own 
Maven POM with the following plugin defined:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;plugin&gt;
+<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;plugin&gt;
   &lt;groupId&gt;org.apache.activemq.tooling&lt;/groupId&gt;
   &lt;artifactId&gt;activemq-perf-maven-plugin&lt;/artifactId&gt;
   &lt;version&gt;${activemq-version}&lt;/version&gt;
 &lt;/plugin&gt;]]></script>
 </div></div><p>In ActiveMQ versions prior to 5.8, the artifactId was 
<code>maven-activemq-perf-plugin</code>.</p><p>Type the following commands into 
separate shells (the broker line here is optional if you have a preconfigured 
one running):</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn activemq-perf:broker 
-Durl=broker:tcp://localhost:61616
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[mvn activemq-perf:broker 
-Durl=broker:tcp://localhost:61616
 mvn activemq-perf:consumer
 mvn activemq-perf:producer
 ]]></script>
 </div></div><p>If you run the broker on a different machine then change the 
producer and consumer commands to</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn activemq-perf:consumer 
-Dfactory.brokerURL=tcp://host:port
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[mvn activemq-perf:consumer 
-Dfactory.brokerURL=tcp://host:port
 mvn activemq-perf:producer -Dfactory.brokerURL=tcp://host:port
 ]]></script>
 </div></div><p>where you switch host:port with the actual values.</p><p>When 
you run the producer &amp; consumer, it generates an XML performance report in 
the current directory, so that you can graph and chart the results etc. See the 
<a shape="rect" href="sample-report.html">sample report</a></p><h3 
id="ActiveMQPerformanceModuleUsersManual-Mavengoals">Maven goals</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Goal</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>activemq-perf:broker</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Starts broker using the 
activemq configuration file located in "src\main\resources\broker-conf" where 
the default config is activemq.xml. <br clear="none" 
class="atl-forced-newline"> Parameters: <br clear="none" 
class="atl-forced-newline"> &#160;1. -DconfigType - specifies the ty
 pe of configuration to use. Its value must be one of the filename in the 
"..\broker-config" directory (e.g. -DconfigType=kaha). <br clear="none" 
class="atl-forced-newline"> &#160;2. -DconfigFile - path to config file other 
than those in "src\..\broker-config".e.g 
-DconfigFile=c:\dir\activemq.xml)</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>activemq-perf:consumer</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Starts the consumer's performance testing. 
The generated report file can be found in the directory specified in the 
parameter "sysTest.reportDir".</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>activemq-perf:producer</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Starts the producer's performance testing. 
The generated report file can be found in the directory specified in the 
parameter 
"sysTest.reportDir".</p></td></tr></tbody></table></div><p><sup>1</sup> 
<strong>Note</strong>:The parameters for both cons
 umer and producers are described in the next section. (<a shape="rect" 
href="sample-report.html">sample report</a>)</p><h3 
id="ActiveMQPerformanceModuleUsersManual-ConfigurationforrunningasystemofJMSClients(Producer/Consumer)">Configuration
 for running a system of JMS Clients (Producer/Consumer)</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Configuration Key</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>sysTest.propsConfigFile</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Use properties specified externally in a key=value 
properties file</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>sysTest.clientPrefix</p></td><td colspan="1" 
rowspan="1" cla
 ss="confluenceTd"><p>JmsConsumer or JmsProducer</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Specifies the client name prefix that will 
be use for each system. By default it will use JmsConsumer for consumer 
systems, and JmsProducer for producer systems.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>sysTest.numClients</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>1</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specifies the number of JMS Clients to 
start.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>sysTest.totalDests</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>1</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specifies the total number of destinations to use for 
the whole system test.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>sysTest.destDistro</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>all</p></td><td colspan="1" rowspan=
 "1" class="confluenceTd"><p>Specifies how to distribute the destinations to 
the clients. Available values are (Invalid value will result to using the 
default value 'all')<sup>1</sup>:</p><ul><li>'all' - All clients will 
send/receive to all destinations. i.e. if there are 2 producers and 5 
destinations, each producer will send a message to each individual 
destination.</li><li>'equal' - Clients will equally divide the destinations 
among themselves. i.e. if there are 2 producers and 5 destinations, each 
producer will send messages to 2 destinations. The fifth destination will not 
be used.</li><li>'divide' - Clients will divide the destinations among 
themselves regardless of equality. i.e. if there are 2 producers and 5 
destinations, producer 1 will send to 3 destinations, while producer 2 will 
send to 2 destinations.</li></ul></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>sysTest.reportDir</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>./</p></td><td col
 span="1" rowspan="1" class="confluenceTd"><p>The directory where the sampler 
report will be saved.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>sysTest.reportName</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The default filename the sampler report will be saved 
us. There is usually no need to set this setting as the default value will 
create either JmsProducer_numClients#<em>numDests#</em>&lt;Dest Distro&gt;.xml 
and JmsConsumer_numClients#_numDests#_&lt;Dest Distro&gt;.xml, where # 
represents the number of clients and destinations set for that system, and 
&lt;Dest Distro&gt; specifies the destination distribution for the 
system.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>sysTest.reportType</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>xml</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specifies the manner of generating the perfo
 rmance report. Available values are:</p><ul><li>'xml' - Write the performance 
report into an xml file. Specified by reportDirectory and reportName. A verbose 
summary will also be displayed at the end of the test.</li><li>'verbose' - All 
information will be written to the standard output, which includes settings, 
sampler data, and performance summary.</li></ul></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>sysTest.samplers</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>tp,cpu</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specifies the samplers that will be started. To use 
enable more than one sampler, separate the values by commas without spaces. 
Available values are:</p><ul><li>'tp' - Throughput sampler</li><li>'cpu' - CPU 
Usage sampler</li></ul></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>sysTest.spiClass</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI<
 /p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The service 
provider interface class that allows the client to create a generic connection 
factory. Current available SPI classes 
include:</p><ol><li>'org.apache.activemq.tool.ActiveMQPojoSPI'</li><li>'org.apache.activemq.tool.ActiveMQClassLoaderSPI'</li></ol></td></tr></tbody></table></div><p><sup>1</sup>
 <strong>Note</strong>: If the number of destinations is less than the number 
of clients and the distribution type is either 'equal' or 'divide', each client 
will send/receive from only one destination, distributing the destinations 
among the clients. i.e. if there are 5 producers and 2 destinations, 3 
producers will send to destination 1, and 2 producers will send to destination 
2. Also, a consumer can only receive from a single destination, unless 
composite destination is supported and specified.</p><h3 
id="ActiveMQPerformanceModuleUsersManual-ConfigurationforrunningaJMSProducer">Configuration
 for running a JMS Producer<
 /h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Configuration Key</p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th 
colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>producer.sessTransacted</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Specifies if the session created will be 
transacted or not. See the JMS Specifications for more 
details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>producer.sessAckMode</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>autoAck</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specified the acknowledge mode of the session. See the 
JMS Specifications for more details. Available values are:</p><ol><li>'autoAck' 
- Session.AUTO_ACKNOWLEDGE</li><li
 >'clientAck' - Session.CLIENT_ACKNOWLEDGE</li><li>'dupsAck' - 
 >Session.DUPS_OK_ACKNOWLEDGE</li><li>'transacted' - 
 >Session.TRANSACTED</li></ol></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>producer.commitAfterXMsgs</p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>1</p></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>Commit transaction after the specified amount of 
 >messages. Only used in conjunction with a transacted JMS Session 
 >(producer.sessTransacted=true and 
 >producer.sessAckMode=transacted)</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>producer.destName</p></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>TEST.FOO</p></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>The prefix of the destination name to use. To specify 
 >a queue, prefix the destination name with 'queue://', for topics, prefix the 
 >destination with 'topic://'. If no prefix is specified, a topic will be 
 >created.</p></td></tr><tr><td colspan="1" 
 rowspan="1" class="confluenceTd"><p>producer.destComposite</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>If there are more than one destination, and 
destComposite=true, the destinations will be merged into one. This assumes that 
the provider supports composite destinations.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>producer.deliveryMode</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>nonpersistent</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The message delivery mode that 
will be used for each producer. Available values 
are:</p><ol><li>'nonpersistent' - use non-persistent delivery mode. 
javax.jms.DeliveryMode.NON_PERSISTENT.</li><li>'persistent' - use persistent 
delivery mode. javax.jms.DeliveryMode.PERSISTENT.</li></ol></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>producer.messageSize</p></td><td colspan="1" 
rowspan="1" class="con
 fluenceTd"><p>1024 bytes</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The size of each text message to 
send.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>producer.msgFileName</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If you want to send a fixed message from a particular 
file. The file needs to be a text file. The entire content of the file will be 
sent as message body. Specifying a file containing the message to be sent makes 
the producer ignore the property producer.messageSize. Use relative or full 
path. Example: -Dproducer.msgFileName=../message.xml</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>producer.createNewMsg</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, each send will create a new JMS Message with 
the specified message size with incrementing 
 text messages (i.e. Text Message 1, Text Message 2, ...). If false, only one 
message will be created before the send loop, and this message will be sent 
over and over again.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>producer.sendDelay</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>0 ms</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Pause producer for sendDelay milliseconds after each 
message (allows producer throttling).</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>producer.sendType</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>time</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Send either time-based or message-count-based. 
Available values are:</p><ol><li>'time' - keep sending messages until a 
specific interval of time elapses.</li><li>'count' - keep sending messages 
until N messages has been sent.</li></ol></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>produc
 er.sendCount</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>1000000 msgs <br clear="none" 
class="atl-forced-newline"> (1 million)</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If sendType=count, send this number of 
messages.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>producer.sendDuration</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>300000 ms <br clear="none" 
class="atl-forced-newline"> (5 mins)</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If sendType=time, send messages for this number of 
milliseconds.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>producer.header</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>none</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specify message headers to be set on all messages. 
Headers use name=value syntax and can be separated using ':'. More than one 
header can be set on a single producer.header line, e.g. producer.he
 ader="JMSType=car:MyHeader=MyValue" (no spaces). Only one producer.header line 
is allowed!</p></td></tr></tbody></table></div><h3 
id="ActiveMQPerformanceModuleUsersManual-ConfigurationforrunningaJMSConsumer">Configuration
 for running a JMS Consumer</h3><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Configuration Key</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>consumer.sessTransacted</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Specifies if the session created will be 
transacted or not. See the JMS Specifications for more 
details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>consumer.sessAckMode</p></td><td colspan="1" 
rowspan="1" class="confl
 uenceTd"><p>autoAck</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specified the acknowledge mode of the session. See the 
JMS Specifications for more details. Available values are:</p><ol><li>'autoAck' 
- Session.AUTO_ACKNOWLEDGE</li><li>'clientAck' - 
Session.CLIENT_ACKNOWLEDGE</li><li>'dupsAck' - 
Session.DUPS_OK_ACKNOWLEDGE</li><li>'transacted' - 
Session.TRANSACTED</li></ol></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>consumer.commitAfterXMsgs</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>1</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Commit transaction after the specified amount of 
messages. Only used in conjunction with a transacted JMS Session 
(consumer.sessTransacted=true and 
consumer.sessAckMode=transacted)</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>consumer.destName</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>TEST.FOO</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"
 ><p>The prefix of the destination name to use. To specify a queue, prefix the 
 >destination name with 'queue://', for topics, prefix the destination with 
 >'topic://'. If no prefix is specified, a topic will be 
 >created.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>consumer.destComposite</p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>If there are more than one destination, and 
 >destComposite=true, the destinations will be merged into one. This assumes 
 >that the provider supports composite destinations.</p></td></tr><tr><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p>consumer.durable</p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>If true, create a durable subscriber, 
 >otherwise create a message consumer. See the JMS Specifications for more 
 >details.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenc
 eTd"><p>consumer.asyncRecv</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, asynchronously receive messages using the 
onMessage() method, otherwise use the receive() method.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>consumer.recvDelay</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>0 ms</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Pause consumer for recvDelay milliseconds 
with each message (allows consumer throttling).</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>consumer.recvType</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>time</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Receive either time-based or 
message-count-based. Available values are:</p><ol><li>'time' - keep receiving 
messages until a specific time interval has elapsed.</li><li>'count' - keep 
receiving until N messages has been rece
 ived.</li></ol></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>consumer.recvCount</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>1000000 msgs <br clear="none" 
class="atl-forced-newline"> (1 million)</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If recvType=count, receive this much 
messages.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>consumer.recvDuration</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>300000 ms <br clear="none" 
class="atl-forced-newline"> (5 mins)</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If recvType=time, receive messages for this specific 
time duration.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>consumer.messageSelector</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>none</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specify <a shape="rect" class="external-link" 
href="http://activemq.apache.org/selectors.html";>mes
 sage selector</a> for all consumers. E.g. consumer.messageSelector="MyHeader = 
'MyValue' AND JMSType = 
'car'"</p></td></tr></tbody></table></div><p><strong>Note</strong>: If you have 
more than one consumer receiving from multiple destinations, it is a good idea 
to change the sysTest.destDistro to 'equal', since by default it uses 'all' and 
a consumer can only receive from a single destination, hence all consumers will 
receive from the first destination in the list only.</p><h3 
id="ActiveMQPerformanceModuleUsersManual-ConfigurationforSPIConnectionFactory:org.apache.activemq.tool.spi.ActiveMQPojoSPI">Configuration
 for SPI Connection Factory: 
org.apache.activemq.tool.spi.ActiveMQPojoSPI</h3><p><strong>Description:</strong>
 This provides details in configuring the JMS Connection Factory created by 
ActiveMQPojoSPI. Default values are based from the default values of the 
service provider org.apache.activemq.ActiveMQConnectionFactory.</p><div 
class="table-wrap"><table class="confluenceTabl
 e"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Configuration Key</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>factory.brokerURL</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>tcp://localhost:61616</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The url of the broker the 
client will connect to.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.userName</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Username on the connection to use.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>factory.password</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Password on the connection to u
 se.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.clientID</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Client ID the connection will use. If none is 
specified, it will be automatically generated.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>factory.asyncSend</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, asynchronously send 
messages.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.asyncDispatch</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, asynchronously dispatch 
messages.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.asyncSession</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1
 " rowspan="1" class="confluenceTd"><p>If true, session will dispatch messages 
asynchronously.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.closeTimeout</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>15000 ms</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>factory.copyMsgOnSend</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>If true, creates a copy of the message to 
be sent.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.disableTimestamp</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, disable the setting of the 
JMSTimestamp.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.deferObjSerial</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" 
class="conflu
 enceTd"><p>If true, defer the serialization of message 
objects.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.optimAck</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, optimizes the acknowledgement of 
messages.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.optimDispatch</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, optimizes the dispatching of 
messages.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.prefetchQueue</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>1000 messages</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Number of messages a queue consumer will 
cache in RAM before processing it.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.prefetchTopic</p></td><td co
 lspan="1" rowspan="1" class="confluenceTd"><p>32766 messages</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Number of messages a topic 
consumer will cache in RAM before processing it.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.useCompression</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, compress message data.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.useRetroactive</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If true, make consumers 
retroactive.</p></td></tr></tbody></table></div><h3 
id="ActiveMQPerformanceModuleUsersManual-ConfigurationforSPIConnectionFactory:org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI">Configuration
 for SPI Connection Factory: 
org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI</h3><p><strong>Description:</st
 rong> This provides details in configuring the JMS Connection Factory created 
by ActiveMQClassLoaderSPI. Default values are based from the default values of 
the service provider 
org.apache.activemq.ActiveMQConnectionFactory.</p><p>ActiveMQClassLoaderSPI 
loads from the classpath "org.apache.activemq.ActiveMQConnectionFactory" and 
configures it using reflection. Configuration is generally based on the API of 
the class loaded. General format is factory.YYY or factory.XXX.YYY, where the 
last variable (YYY) is the property to set and everything in between is the 
getter of the class to use to set (YYY). For example:</p><ol><li>To set the 
value for asyncSend in ActiveMQConnectionFactory, use:<br clear="none"> 
<code>factory.useAsyncSend=true</code>, which is equivalent to calling 
<code>factory.setUseAsyncSend(true)</code></li></ol><ol><li>To set the queue 
prefetch for ActiveMQConnectionFactory, use:<br clear="none"> 
<code>factory.prefetchPolicy.queuePrefetch=1</code>, which is equivalent to
  calling 
<code>factory.getPrefetchPolicy().setQueuePrefetch(1)</code></li></ol><p>It 
should be noted that the loaded class should implement the appropriate getter 
and setter methods. Nested objects should also be properly instantiated. For 
more information on configuring this SPI, refer to the specific provider API 
manual.</p><p>As of ActiveMQ 4.0.1, these are the available fields and default 
values:</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Configuration Key</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p>factory.prefetchPolicy.optimizeDurableTopicPrefetch</p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>1000</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.prefetchPolicy.durableTopicPrefetch</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>100</p></td></tr><tr>
 <td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.password</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>null</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.prefetchPolicy.queueBrowserPrefetch</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>500</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.useCompression</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p>factory.disableTimeStampsByDefault</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.optimizedMessageDispatch</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.useRetroactiveConsumer</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td cols
 pan="1" rowspan="1" 
class="confluenceTd"><p>factory.alwaysSessionAsync</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>true</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>factory.copyMessageOnSend</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.prefetchPolicy.topicPrefetch</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>32766</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.useAsyncSend</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p>factory.redeliveryPolicy.backOffMultiplier</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>5</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.prefetchPolicy.inputStreamPrefetch</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>100</p></td></tr><tr><td co
 lspan="1" rowspan="1" class="confluenceTd"><p>factory.closeTimeout</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>15000</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>factory.userName</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.optimizeAcknowledge</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>factory.clientID</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>null</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p>factory.objectMessageSerializationDefered</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>factory.asyncDispatch</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"
 ><p>factory.redeliveryPolicy.initialRedeliveryDelay</p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>1000</p></td></tr><tr><td colspan="1" 
 >rowspan="1" 
 >class="confluenceTd"><p>factory.prefetchPolicy.queuePrefetch</p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p>1000</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p>factory.redeliveryPolicy.maximumRedeliveries</p></td><td
 > colspan="1" rowspan="1" class="confluenceTd"><p>5</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p>factory.redeliveryPolicy.useCollisionAvoidance</p></td><td
 > colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p>factory.prefetchPolicy.maximumPendingMessageLimit</p></td><td
 > colspan="1" rowspan="1" class="confluenceTd"><p>0</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p>factory.redeliveryPolicy.useExponentialBackOff</p></td><td
 > colspan="1" rowspan="1" class="confluenceT
 d"><p>false</p></td></tr></tbody></table></div><h3 
id="ActiveMQPerformanceModuleUsersManual-Configurationforsamplers">Configuration
 for samplers</h3><p>There are two samplers built into the perfomance test 
tool. Both are configured with the same configuration keys, only prefixed with 
different sampler names.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh">Sampler</th><th colspan="1" rowspan="1" 
class="confluenceTh"><em>samplerName</em></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd">Throughput Sampler</td><td colspan="1" 
rowspan="1" class="confluenceTd">tpSampler</td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd">CPU Sampler</td><td colspan="1" rowspan="1" 
class="confluenceTd">cpuSampler</td></tr></tbody></table></div><p>For example, 
it is possible to configure the two samplers differently for a single test run, 
using the prefixes above as follows:</p><div class="code panel pdl" style="bor
 der-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn activemq-perf:producer 
-DtpSampler.duration=10000 -DcpuSampler.duration=15000]]></script>
+<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[mvn activemq-perf:producer 
-DtpSampler.duration=10000 -DcpuSampler.duration=15000]]></script>
 </div></div><p>By default, both samplers are used within a test run. This 
however, can be overridden through the use of the <code>sysTest.samplers</code> 
property.</p><h4 
id="ActiveMQPerformanceModuleUsersManual-BeforeActiveMQ5.11">Before ActiveMQ 
5.11</h4><p>Sampler configurations are not tied in to the test run, so it is 
possible for the sampler to run for longer than the actual test itself. For 
short run durations, the sampler may not even have ramped up before the test 
completes.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Configuration Key</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><em>samplerName</em>.duration</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>300000</p></td><td colspan="1" 
rowspan="1" class="confluenceTd">
 <p>The total duration (in ms) the sampler will run, including ramp up and ramp 
down time.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><em>samplerName</em>.rampUpTime</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>30000</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The ramp up time of the sampler, sampling will only 
start after the ramp up time.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><em>samplerName</em>.rampDownTime</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>30000</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The ramp down time of the sampler, sampling 
will stop when the sampler has executed for (duration - rampUpTime - 
rampDownTime) ms.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><em>samplerName</em>.interval</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>1000</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The interval (
 in ms), the sampler will sample for 
data.</p></td></tr></tbody></table></div><h4 
id="ActiveMQPerformanceModuleUsersManual-FromActiveMQ5.11">From ActiveMQ 
5.11</h4><p>Sampler run duration is tied directly to the behavior of the client 
(producer/consumer). Due to the non-deterministic nature of count-based tests 
(where consumer.recvType or producer.sendType are set to <code>count</code>), 
duration, ramp up and ramp down times are ignored; the samplers are shut down 
when the client completes.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Configuration Key</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><em>samplerName</em>.duration</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>For time-based tests, matches 
the consumer or producer dur
 ation.</p><p><em>Ignored for count-based tests.</em></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The total duration (in ms) the sampler will 
run, including ramp up and ramp down time.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><em>samplerName</em>.rampUpTime</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>null; defers to 
rampUpPercent.</p><p><em>Ignored for count-based tests.</em></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The ramp up time of the 
sampler, sampling will only start after the ramp up time.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><em>samplerName</em>.rampDownTime</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>null; defers to 
rampDownPercent.</p><p><em>Ignored for count-based tests.</em></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The ramp down time of the 
sampler, sampling will stop when the sampler has executed for (duration - 
rampUpTime - ra
 mpDownTime) ms.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><em>samplerName</em>.rampUpPercent</td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>0</p><p><em>Ignored for count-based 
tests.</em></p></td><td colspan="1" rowspan="1" class="confluenceTd">The 
percentage of the overall run duration that the sampler should use to ramp up 
(0-100). Overridden by rampUpTime.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><em>samplerName</em>.rampDownPercent</td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>0</p><p><em>Ignored for count-based 
tests.</em></p></td><td colspan="1" rowspan="1" class="confluenceTd">The 
percentage of the overall run duration that the sampler should use to ramp down 
(0-99). Overridden by rampDownTime.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><em>samplerName</em>.interval</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>1000</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Th
 e interval (in ms), the sampler will sample for 
data.</p></td></tr></tbody></table></div><p>The time taken to ramp up and ramp 
down, whether defined through milliseconds or as a percentage cannot exceed the 
total duration.</p></div>
         </td>
         <td valign="top">


Reply via email to