[jboss-cvs] JBoss Messaging SVN: r4316 - in trunk/examples/jms: src/org/jboss/jms/example and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed May 28 05:17:53 EDT 2008
Author: jmesnil
Date: 2008-05-28 05:17:52 -0400 (Wed, 28 May 2008)
New Revision: 4316
Modified:
trunk/examples/jms/build.xml
trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java
trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java
Log:
JBMESSAGING-1343 - Some more tweaks to PerfExample:
- added drain.queue property to drain (or not) the queue before taking statistics when receiving messages (true by default)
Modified: trunk/examples/jms/build.xml
===================================================================
--- trunk/examples/jms/build.xml 2008-05-28 08:45:44 UTC (rev 4315)
+++ trunk/examples/jms/build.xml 2008-05-28 09:17:52 UTC (rev 4316)
@@ -48,6 +48,7 @@
<property name="sample.period" value="1"/>
<property name="sess.trans" value="false"/>
<property name="sess.trans.size" value="100"/>
+ <property name="drain.queue" value="true"/>
<path id="compile.classpath">
<fileset dir="${lib.dir}">
@@ -106,19 +107,28 @@
</java>
</target>
+ <target name="echo-params">
+ <echo>
+***********************************************************************************
+* available parameters (-Dmessage.count=1000)
+*
+* parameter description default current
+* --------- ----------- ------- -------
+* message.count number of messages 200000 ${message.count}
+* message.warmup.count number of messages to warm up 10000 ${message.warmup.count}
+* delivery.mode PERSISTENT/NON_PERSISTENT PERSISTENT ${delivery.mode}
+* sample.period timing period in seconds 1 ${sample.period}
+* sess.trans Is session transacted true ${sess.trans}
+* sess.trans.size batch size to commit 100 ${sess.trans.size}
+* drain.queue drain the queue (listener only) true ${drain.queue}
+***********************************************************************************
+ </echo>
+ </target>
+
<target name="perfListener" depends="compile" description="-> run performance test when listening to a queue">
- <echo>***********************************************************************************</echo>
- <echo>* available parameters (-Dmessage.count=1000) </echo>
- <echo>* </echo>
- <echo>* param description default current</echo>
- <echo>* message.count number of messages 200000 ${message.count}</echo>
- <echo>* delivery.mode PERSISTENT/NON_PERSISTENT NON_PERSISTENT ${delivery.mode}</echo>
- <echo>* sample.period timing period in seconds 1 second ${sample.period}</echo>
- <echo>* sess.trans Is session transacted false ${sess.trans}</echo>
- <echo>* sess.trans.size batch size to commit 5000 ${sess.trans.size}</echo>
- <echo>***********************************************************************************</echo>
-
- <java classname="org.jboss.jms.example.PerfExample" fork="true">
+ <antcall target="echo-params" />
+
+ <java classname="org.jboss.jms.example.PerfExample" fork="true">
<classpath refid="runtime.classpath"/>
<jvmarg value="-Xmx1024M"/>
<jvmarg value="-XX:+UseParallelGC"/>
@@ -131,22 +141,15 @@
<arg value="${sample.period}"/>
<arg value="${sess.trans}"/>
<arg value="${sess.trans.size}"/>
+ <arg value="${drain.queue}"/>
</java>
</target>
<target name="perfSender" depends="compile" description="-> run performance test when sending to a queue">
- <echo>***********************************************************************************</echo>
- <echo>* available parameters (-Dmessage.count=1000) </echo>
- <echo>* </echo>
- <echo>* param description default current</echo>
- <echo>* message.count number of messages 200000 ${message.count}</echo>
- <echo>* delivery.mode PERSISTENT/NON_PERSISTENT NON_PERSISTENT ${delivery.mode}</echo>
- <echo>* sample.period timing period in seconds 1 second ${sample.period}</echo>
- <echo>* sess.trans Is session transacted false ${sess.trans}</echo>
- <echo>* sess.trans.size batch size to commit 5000 ${sess.trans.size}</echo>
- <echo>***********************************************************************************</echo>
- <java classname="org.jboss.jms.example.PerfExample" fork="true">
+ <antcall target="echo-params" />
+
+ <java classname="org.jboss.jms.example.PerfExample" fork="true">
<classpath refid="runtime.classpath"/>
<jvmarg value="-Xmx512M"/>
<jvmarg value="-XX:+UseParallelGC"/>
@@ -159,6 +162,7 @@
<arg value="${sample.period}"/>
<arg value="${sess.trans}"/>
<arg value="${sess.trans.size}"/>
+ <arg value="false"/>
</java>
</target>
Modified: trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java 2008-05-28 08:45:44 UTC (rev 4315)
+++ trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java 2008-05-28 09:17:52 UTC (rev 4316)
@@ -59,7 +59,8 @@
boolean transacted = Boolean.parseBoolean(args[5]);
log.info("Transacted:" + transacted);
int transactionBatchSize = Integer.parseInt(args[6]);
-
+ boolean drainQueue = Boolean.parseBoolean(args[7]);
+
PerfParams perfParams = new PerfParams();
perfParams.setNoOfMessagesToSend(noOfMessages);
perfParams.setNoOfWarmupMessages(noOfWarmupMessages);
@@ -67,6 +68,7 @@
perfParams.setSamplePeriod(samplePeriod);
perfParams.setSessionTransacted(transacted);
perfParams.setTransactionBatchSize(transactionBatchSize);
+ perfParams.setDrainQueue(drainQueue);
if (args[0].equalsIgnoreCase("-l"))
{
@@ -95,7 +97,6 @@
{
log.info("params = " + perfParams);
init(perfParams.isSessionTransacted());
- // use 10% of the messages to warm up the system
log.info("warming up by sending " + perfParams.getNoOfWarmupMessages() + " messages");
sendMessages(perfParams.getNoOfWarmupMessages(), perfParams.getTransactionBatchSize(), perfParams.getDeliveryMode(), perfParams.isSessionTransacted());
log.info("warmed up");
@@ -165,19 +166,17 @@
{
init(perfParams.isSessionTransacted());
MessageConsumer messageConsumer = session.createConsumer(queue);
- CountDownLatch countDownLatch = new CountDownLatch(1);
connection.start();
- log.info("emptying queue");
- while (true)
+
+ if (perfParams.isDrainQueue())
{
- Message m = messageConsumer.receive(500);
- if (m == null)
- {
- break;
- }
+ drainQueue(messageConsumer);
}
+
+ log.info("READY!!!");
+
+ CountDownLatch countDownLatch = new CountDownLatch(1);
messageConsumer.setMessageListener(new PerfListener(countDownLatch, perfParams));
- log.info("READY!!!");
countDownLatch.await();
}
@@ -199,8 +198,20 @@
}
}
+ private void drainQueue(MessageConsumer consumer) throws JMSException
+ {
+ log.info("draining queue");
+ while (true)
+ {
+ Message m = consumer.receive(500);
+ if (m == null)
+ {
+ log.info("queue is drained");
+ break;
+ }
+ }
+ }
-
/**
* a message listener
*/
@@ -209,7 +220,7 @@
private CountDownLatch countDownLatch;
private PerfParams perfParams;
-
+
private boolean started = false;
public PerfListener(CountDownLatch countDownLatch, PerfParams perfParams)
@@ -228,8 +239,7 @@
try
{
- BytesMessage bm = (BytesMessage) message;
- messageCount.incrementAndGet();
+ messageCount.incrementAndGet();
boolean committed = checkCommit();
if (messageCount.longValue() == perfParams.getNoOfMessagesToSend())
{
@@ -246,7 +256,7 @@
{
e.printStackTrace();
}
- }
+ }
private boolean checkCommit() throws Exception
{
Modified: trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java 2008-05-28 08:45:44 UTC (rev 4315)
+++ trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java 2008-05-28 09:17:52 UTC (rev 4316)
@@ -35,6 +35,7 @@
int deliveryMode = DeliveryMode.NON_PERSISTENT;
boolean isSessionTransacted = false;
int transactionBatchSize = 5000;
+ private boolean drainQueue = true;
public int getNoOfMessagesToSend()
{
@@ -97,10 +98,21 @@
this.transactionBatchSize = transactionBatchSize;
}
+ public boolean isDrainQueue()
+ {
+ return drainQueue ;
+ }
+
+ public void setDrainQueue(boolean drainQueue)
+ {
+ this.drainQueue = drainQueue;
+ }
+
public String toString()
{
- return "message to send = " + noOfMessagesToSend + " samplePeriod = " + samplePeriod + "s" + " DeliveryMode = " +
- (deliveryMode == DeliveryMode.PERSISTENT?"PERSISTENT":"NON_PERSISTENT") + " session transacted = " + isSessionTransacted +
- (isSessionTransacted?" transaction batch size = " + transactionBatchSize:"");
+ return "message to send = " + noOfMessagesToSend + ", samplePeriod = " + samplePeriod + "s" + ", DeliveryMode = " +
+ (deliveryMode == DeliveryMode.PERSISTENT?"PERSISTENT":"NON_PERSISTENT") + ", session transacted = " + isSessionTransacted +
+ (isSessionTransacted?", transaction batch size = " + transactionBatchSize:"" + ", drain queue = " + drainQueue);
}
+
}
More information about the jboss-cvs-commits
mailing list