[jboss-cvs] JBoss Messaging SVN: r4211 - in trunk: examples/jms and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri May 16 04:37:02 EDT 2008
Author: ataylor
Date: 2008-05-16 04:37:02 -0400 (Fri, 16 May 2008)
New Revision: 4211
Removed:
trunk/examples/jms/src/org/jboss/jms/example/PerfTransactionExample.java
Modified:
trunk/build-messaging.xml
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:
merged transaction perf example into perfexample
Modified: trunk/build-messaging.xml
===================================================================
--- trunk/build-messaging.xml 2008-05-16 06:20:24 UTC (rev 4210)
+++ trunk/build-messaging.xml 2008-05-16 08:37:02 UTC (rev 4211)
@@ -766,7 +766,7 @@
<java classname="org.jboss.messaging.microcontainer.JBMBootstrapServer" fork="true">
<jvmarg value="-XX:+UseParallelGC"/>
<jvmarg value="-Xms512M"/>
- <jvmarg value="-Xmx1024M"/>
+ <jvmarg value="-Xmx2048M"/>
<jvmarg value="-Dorg.jboss.logging.Logger.pluginClass=org.jboss.messaging.core.logging.JBMLoggerPlugin"/>
<jvmarg value="-Djava.library.path=${native.bin.dir}"/>
<jvmarg value="-Djava.naming.factory.initial=org.jnp.interfaces.NamingContextFactory"/>
Modified: trunk/examples/jms/build.xml
===================================================================
--- trunk/examples/jms/build.xml 2008-05-16 06:20:24 UTC (rev 4210)
+++ trunk/examples/jms/build.xml 2008-05-16 08:37:02 UTC (rev 4211)
@@ -44,6 +44,8 @@
<property name="message.count" value="200000"/>
<property name="delivery.mode" value="NON_PERSISTENT"/>
<property name="sample.period" value="1"/>
+ <property name="sess.trans" value="false"/>
+ <property name="sess.trans.size" value="5000"/>
<path id="compile.classpath">
<fileset dir="${lib.dir}">
@@ -105,13 +107,24 @@
<target name="perfListener" depends="compile">
<java classname="org.jboss.jms.example.PerfExample" fork="true">
<classpath refid="runtime.classpath"/>
- <jvmarg value="-Xmx512M"/>
+ <jvmarg value="-Xmx1024M"/>
<jvmarg value="-XX:+UseParallelGC"/>
<arg value="-l"/>
</java>
</target>
+
<target name="perfSender" depends="compile">
+ <echo>*****************************************************************</echo>
+ <echo>* available parameters (-Dmessage.count=1000) *</echo>
+ <echo>* *</echo>
+ <echo>* param description default *</echo>
+ <echo>* message.count number of messages 200000 *</echo>
+ <echo>* delivery.mode PERSISTENT/NON_PERSISTENT NON_PERSISTENT *</echo>
+ <echo>* sample.period timing period in seconds 1 second *</echo>
+ <echo>* sess.trans Is session transacted false *</echo>
+ <echo>* sess.trans.size batch size to commit 5000 *</echo>
+ <echo>*****************************************************************</echo>
<java classname="org.jboss.jms.example.PerfExample" fork="true">
<classpath refid="runtime.classpath"/>
<jvmarg value="-Xmx512M"/>
@@ -120,28 +133,9 @@
<arg value="${message.count}"/>
<arg value="${delivery.mode}"/>
<arg value="${sample.period}"/>
+ <arg value="${sess.trans}"/>
+ <arg value="${sess.trans.size}"/>
</java>
</target>
- <target name="perfListenerTransactional" depends="compile">
- <java classname="org.jboss.jms.example.PerfTransactionExample" fork="true">
- <classpath refid="runtime.classpath"/>
- <jvmarg value="-Xmx512M"/>
- <jvmarg value="-XX:+UseParallelGC"/>
- <arg value="-l"/>
- </java>
- </target>
-
- <target name="perfSenderTransactional" depends="compile">
- <java classname="org.jboss.jms.example.PerfTransactionExample" fork="true">
- <classpath refid="runtime.classpath"/>
- <jvmarg value="-Xmx512M"/>
- <jvmarg value="-XX:+UseParallelGC"/>
- <arg value="-s"/>
- <arg value="${message.count}"/>
- <arg value="PERSISTENT"/>
- <arg value="${sample.period}"/>
- </java>
- </target>
-
</project>
\ No newline at end of file
Modified: trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java 2008-05-16 06:20:24 UTC (rev 4210)
+++ trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java 2008-05-16 08:37:02 UTC (rev 4211)
@@ -57,46 +57,72 @@
int noOfMessages = Integer.parseInt(args[1]);
int deliveryMode = args[2].equalsIgnoreCase("persistent")? DeliveryMode.PERSISTENT: DeliveryMode.NON_PERSISTENT;
long samplePeriod = Long.parseLong(args[3]);
- perfExample.runSender(noOfMessages, deliveryMode, samplePeriod);
+ boolean transacted = Boolean.parseBoolean(args[4]);
+ if(transacted)
+ {
+ deliveryMode = DeliveryMode.PERSISTENT;
+ }
+ int transactionBatchSize = Integer.parseInt(args[5]);
+ PerfParams perfParams = new PerfParams();
+ perfParams.setNoOfMessagesToSend(noOfMessages);
+ perfParams.setDeliveryMode(deliveryMode);
+ perfParams.setSamplePeriod(samplePeriod);
+ perfParams.setSessionTransacted(transacted);
+ perfParams.setTransactionBatchSize(transactionBatchSize);
+ perfExample.runSender(perfParams);
}
}
- private void init()
+ private void init(boolean transacted)
throws NamingException, JMSException
{
InitialContext initialContext = new InitialContext();
queue = (Queue) initialContext.lookup("/queue/testPerfQueue");
ConnectionFactory cf = (ConnectionFactory) initialContext.lookup("/ConnectionFactory");
connection = cf.createConnection();
- session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
+ session = connection.createSession(transacted, Session.DUPS_OK_ACKNOWLEDGE);
}
- public void runSender(int noOfMessage, int deliveryMode, long samplePeriod)
+ public void runSender(PerfParams perfParams)
{
try
{
- init();
+ log.info("params = " + perfParams);
+ init(perfParams.isSessionTransacted());
MessageProducer producer = session.createProducer(queue);
producer.setDisableMessageID(true);
producer.setDisableMessageTimestamp(true);
- producer.setDeliveryMode(deliveryMode);
+ producer.setDeliveryMode(perfParams.getDeliveryMode());
ObjectMessage m = session.createObjectMessage();
- PerfParams perfParams = new PerfParams();
- perfParams.setNoOfMessagesToSend(noOfMessage);
- perfParams.setDeliveryMode(deliveryMode);
- perfParams.setSamplePeriod(samplePeriod);
m.setObject(perfParams);
producer.send(m);
scheduler.scheduleAtFixedRate(command, perfParams.getSamplePeriod(), perfParams.getSamplePeriod(), TimeUnit.SECONDS);
BytesMessage bytesMessage = session.createBytesMessage();
byte[] payload = new byte[1024];
bytesMessage.writeBytes(payload);
- for (int i = 1; i <= noOfMessage; i++)
+ boolean committed = false;
+ for (int i = 1; i <= perfParams.getNoOfMessagesToSend(); i++)
{
producer.send(bytesMessage);
- messageCount++;
+ messageCount++;
+ if (perfParams.isSessionTransacted())
+ {
+ if (messageCount % perfParams.getTransactionBatchSize() == 0)
+ {
+ session.commit();
+ committed = true;
+ }
+ else
+ {
+ committed = false;
+ }
+ }
}
+ if (perfParams.isSessionTransacted() && !committed)
+ {
+ session.commit();
+ }
scheduler.shutdownNow();
log.info("average " + command.getAverage() + " per " + (perfParams.getSamplePeriod()/1000) + " secs" );
}
@@ -122,7 +148,7 @@
{
try
{
- init();
+ init(false);
MessageConsumer messageConsumer = session.createConsumer(queue);
CountDownLatch countDownLatch = new CountDownLatch(1);
connection.start();
Deleted: trunk/examples/jms/src/org/jboss/jms/example/PerfTransactionExample.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/example/PerfTransactionExample.java 2008-05-16 06:20:24 UTC (rev 4210)
+++ trunk/examples/jms/src/org/jboss/jms/example/PerfTransactionExample.java 2008-05-16 08:37:02 UTC (rev 4211)
@@ -1,272 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.jms.example;
-
-import org.jboss.messaging.core.logging.Logger;
-import org.jboss.jms.util.PerfParams;
-
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.jms.*;
-import java.util.concurrent.*;
-
-/**
- * a performance example that can be used to gather simple performance figures.
- *
- * @author <a href="ataylor at redhat.com">Andy Taylor</a>
- * @author <a href="tim.fox at jboss.com">Tim Fox</a>
- */
-public class PerfTransactionExample
-{
- private static Logger log = Logger.getLogger(PerfExample.class);
- private Queue queue;
- private Connection connection;
- private int messageCount = 0;
- private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
- private Session session;
- private Sampler command = new Sampler();
-
- private static final int transactionSize = 5000;
-
- public static void main(String[] args)
- {
- PerfTransactionExample perfExample = new PerfTransactionExample();
- if (args[0].equalsIgnoreCase("-l"))
- {
- perfExample.runListener();
- }
- else
- {
- int noOfMessages = Integer.parseInt(args[1]);
- int deliveryMode = args[2].equalsIgnoreCase("persistent")? DeliveryMode.PERSISTENT: DeliveryMode.NON_PERSISTENT;
- long samplePeriod = Long.parseLong(args[3]);
- perfExample.runSender(noOfMessages, deliveryMode, samplePeriod);
- }
-
- }
-
- private void init()
- throws NamingException, JMSException
- {
- InitialContext initialContext = new InitialContext();
- queue = (Queue) initialContext.lookup("/queue/testPerfQueue");
- ConnectionFactory cf = (ConnectionFactory) initialContext.lookup("/ConnectionFactory");
- connection = cf.createConnection();
- session = connection.createSession(true, Session.SESSION_TRANSACTED);
- }
-
- public void runSender(int noOfMessage, int deliveryMode, long samplePeriod)
- {
- try
- {
- init();
- MessageProducer producer = session.createProducer(queue);
- producer.setDisableMessageID(true);
- producer.setDisableMessageTimestamp(true);
- producer.setDeliveryMode(deliveryMode);
- ObjectMessage m = session.createObjectMessage();
- PerfParams perfParams = new PerfParams();
- perfParams.setNoOfMessagesToSend(noOfMessage);
- perfParams.setDeliveryMode(deliveryMode);
- perfParams.setSamplePeriod(samplePeriod);
- m.setObject(perfParams);
- producer.send(m);
- scheduler.scheduleAtFixedRate(command, perfParams.getSamplePeriod(), perfParams.getSamplePeriod(), TimeUnit.SECONDS);
- BytesMessage bytesMessage = session.createBytesMessage();
- byte[] payload = new byte[1024];
- bytesMessage.writeBytes(payload);
- boolean committed = false;
- for (int i = 1; i <= noOfMessage; i++)
- {
- producer.send(bytesMessage);
- messageCount++;
- if (messageCount % transactionSize == 0)
- {
- session.commit();
- committed = true;
- }
- else
- {
- committed = false;
- }
- }
- if (!committed)
- {
- session.commit();
- }
- scheduler.shutdownNow();
- log.info("average " + command.getAverage() + " per " + (perfParams.getSamplePeriod()/1000) + " secs" );
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- if (connection != null)
- try
- {
- connection.close();
- }
- catch (JMSException e)
- {
- e.printStackTrace();
- }
- }
- }
-
- public void runListener()
- {
- try
- {
- init();
- MessageConsumer messageConsumer = session.createConsumer(queue);
- CountDownLatch countDownLatch = new CountDownLatch(1);
- connection.start();
- log.info("emptying queue");
- while (true)
- {
- Message m = messageConsumer.receive(500);
- if (m == null)
- {
- break;
- }
- }
- messageConsumer.setMessageListener(new PerfListener(countDownLatch));
- log.info("READY!!!");
- countDownLatch.await();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- if (connection != null)
- try
- {
- connection.close();
- }
- catch (JMSException e)
- {
- e.printStackTrace();
- }
- }
- }
-
-
-
- /**
- * a message listener
- */
- class PerfListener implements MessageListener
- {
- private boolean started = false;
- private PerfParams params = null;
- int count = 0;
- private CountDownLatch countDownLatch;
-
-
- public PerfListener(CountDownLatch countDownLatch)
- {
- this.countDownLatch = countDownLatch;
- }
-
- public void onMessage(Message message)
- {
- if (!started)
- {
- started = true;
- ObjectMessage m = (ObjectMessage) message;
- try
- {
- params = (PerfParams) m.getObject();
- }
- catch (JMSException e)
- {
- params = new PerfParams();
- }
- log.info("params = " + params);
- scheduler.scheduleAtFixedRate(command, params.getSamplePeriod(), params.getSamplePeriod(), TimeUnit.SECONDS);
- }
- else
- {
- try
- {
- boolean committed = false;
- BytesMessage bm = (BytesMessage) message;
- messageCount++;
- if (messageCount % transactionSize == 0)
- {
- session.commit();
- committed = true;
- }
- if (messageCount == params.getNoOfMessagesToSend())
- {
- if (!committed)
- {
- session.commit();
- }
- countDownLatch.countDown();
- scheduler.shutdownNow();
- log.info("average " + command.getAverage() + " per " + (params.getSamplePeriod()/1000) + " secs" );
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- }
- }
-
- /**
- * simple class to gather performance figures
- */
- class Sampler implements Runnable
- {
- int sampleCount = 0;
-
- long startTime = 0;
-
- long samplesTaken = 0;
-
- public void run()
- {
- if(startTime == 0)
- {
- startTime = System.currentTimeMillis();
- }
- long elapsed = System.currentTimeMillis() - startTime;
- int lastCount = sampleCount;
- sampleCount = messageCount;
- samplesTaken++;
- log.info(" time elapsed " + (elapsed / 1000) + " secs, message count " + (sampleCount) + " : this period " + (sampleCount - lastCount));
- }
-
- public long getAverage()
- {
- return sampleCount/samplesTaken;
- }
-
- }
-}
Modified: trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java 2008-05-16 06:20:24 UTC (rev 4210)
+++ trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java 2008-05-16 08:37:02 UTC (rev 4211)
@@ -32,6 +32,8 @@
int noOfMessagesToSend = 1000;
long samplePeriod = 1000;
int deliveryMode = DeliveryMode.NON_PERSISTENT;
+ boolean isSessionTransacted = false;
+ int transactionBatchSize = 5000;
public int getNoOfMessagesToSend()
{
@@ -63,9 +65,31 @@
this.deliveryMode = deliveryMode;
}
+ public boolean isSessionTransacted()
+ {
+ return isSessionTransacted;
+ }
+
+ public void setSessionTransacted(boolean sessionTransacted)
+ {
+ isSessionTransacted = sessionTransacted;
+ }
+
+
+ public int getTransactionBatchSize()
+ {
+ return transactionBatchSize;
+ }
+
+ public void setTransactionBatchSize(int transactionBatchSize)
+ {
+ this.transactionBatchSize = transactionBatchSize;
+ }
+
public String toString()
{
return "message to send = " + noOfMessagesToSend + " samplePeriod = " + samplePeriod + "ms" + " DeliveryMode = " +
- (deliveryMode == DeliveryMode.PERSISTENT?"PERSISTENT":"NON_PERSISTENT");
+ (deliveryMode == DeliveryMode.PERSISTENT?"PERSISTENT":"NON_PERSISTENT") + " session transacted = " + isSessionTransacted +
+ (isSessionTransacted?" transaction batch size = " + transactionBatchSize:"");
}
}
More information about the jboss-cvs-commits
mailing list