[jboss-cvs] JBoss Messaging SVN: r4345 - in trunk: examples/jms/src/org/jboss/jms/example and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu May 29 12:30:31 EDT 2008


Author: timfox
Date: 2008-05-29 12:30:30 -0400 (Thu, 29 May 2008)
New Revision: 4345

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
   trunk/src/config/jbm-jndi.xml
Log:
Tweaks


Modified: trunk/examples/jms/build.xml
===================================================================
--- trunk/examples/jms/build.xml	2008-05-29 16:19:44 UTC (rev 4344)
+++ trunk/examples/jms/build.xml	2008-05-29 16:30:30 UTC (rev 4345)
@@ -39,6 +39,7 @@
    <property name="src.dir" value="src"/>
    <property name="config.dir" value="config"/>
    <property name="build.dir" value="build"/>
+   <property name="other.system.client.dir" value="other-system-client-dir"/>
 
    <!--perf props-->
    <property name="message.count" value="200000"/>
@@ -50,9 +51,16 @@
    <property name="sess.ackmode" value="DUPS_OK"/>
    <property name="sess.trans.size" value="1000"/>
    <property name="drain.queue" value="true"/>
-   <property name="queue.lookup" value="/queue/testPerfQueue"/>
-   <property name="cf.lookup" value="/ConnectionFactory"/>
+   <property name="queue.lookup" value="MyQueue"/>
+   <property name="cf.lookup" value="ConnectionFactory"/>
+   <property name="throttle.rate" value="-1"/>
 
+   <path id="other.system.client.classpath">
+       <fileset dir="${other.system.client.dir}">
+         <include name="**/*.jar"/>
+      </fileset>
+   </path>
+
    <path id="compile.classpath">
       <fileset dir="${lib.dir}">
          <include name="**/*.jar"/>
@@ -61,6 +69,7 @@
    </path>
 
    <path id="runtime.classpath">
+      <path refid="other.system.client.classpath"/>
       <path refid="compile.classpath"/>
       <pathelement location="${build.dir}"/>
       <pathelement location="config"/>
@@ -116,18 +125,19 @@
 ***********************************************************************************
 * 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}
-* message.size          message size (in bytes)          1024                  ${message.size}
-* delivery.mode         PERSISTENT/NON_PERSISTENT        NON_PERSISTENT        ${delivery.mode}
-* sess.trans            Is session transacted            false                 ${sess.trans}
-* sess.trans.size       batch size to commit             1000                  ${sess.trans.size}
-* sess.ackmode          Ack mode DUPS_OK/AUTO_ACK        DUPS_OK               ${sess.ackmode}
-* drain.queue           drain the queue (listener only)  true                  ${drain.queue}
-* queue.lookup          Queue JNDI lookup                /queue/testPerfQueue  ${queue.lookup}
-* cf.lookup             ConnectionFactory JNDI lookup    /ConnectionFactory    ${cf.lookup}
+* parameter            current (default)                 description                     
+* ---------            -----------------                 -----------                     
+* message.count        ${message.count} (200000)         number of messages    
+* message.size         ${message.size} (1000)            size of message in bytes      	
+* message.warmup.count ${message.warmup.count} (10000)   number of messages to warm up   
+* delivery.mode        ${delivery.mode} (NON_PERSISTENT) PERSISTENT/NON_PERSISTENT       
+* sess.trans           ${sess.trans} (false)             Is session transacted           
+* sess.trans.size      ${sess.trans.size} (1000)         batch size to commit            
+* sess.ackmode         ${sess.ackmode} (DUPS_OK)         Ack mode DUPS_OK/AUTO_ACK       
+* drain.queue          ${drain.queue} (true)             drain the queue (listener only) 
+* queue.lookup         ${queue.lookup} (MyQueue)         Queue JNDI lookup               
+* cf.lookup            ${cf.lookup} (ConnectionFactory)  ConnectionFactory JNDI lookup   
+* throttle.rate        ${throttle.rate} (-1)             The max rate to throttle senders to in msgs/sec, -1 = no throttle
 ***********************************************************************************
       </echo>
    </target>
@@ -152,6 +162,7 @@
          <arg value="${drain.queue}"/>
          <arg value="${queue.lookup}"/>
          <arg value="${cf.lookup}"/>
+         <arg value="${throttle.rate}"/>
       </java>
    </target>
 
@@ -175,6 +186,7 @@
          <arg value="false"/>
          <arg value="${queue.lookup}"/>
          <arg value="${cf.lookup}"/>
+         <arg value="${throttle.rate}"/>
       </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-29 16:19:44 UTC (rev 4344)
+++ trunk/examples/jms/src/org/jboss/jms/example/PerfExample.java	2008-05-29 16:30:30 UTC (rev 4345)
@@ -39,6 +39,7 @@
 
 import org.jboss.jms.util.PerfParams;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.util.TokenBucketLimiter;
 
 /**
  * A simple example that can be used to gather basic performance measurements.
@@ -76,6 +77,7 @@
       boolean drainQueue = Boolean.parseBoolean(args[8]);
       String queueLookup = args[9];
       String connectionFactoryLookup = args[10];
+      int throttleRate = Integer.parseInt(args[11]);
 
       PerfParams perfParams = new PerfParams();
       perfParams.setNoOfMessagesToSend(noOfMessages);
@@ -88,6 +90,7 @@
       perfParams.setDrainQueue(drainQueue);
       perfParams.setQueueLookup(queueLookup);
       perfParams.setConnectionFactoryLookup(connectionFactoryLookup);
+      perfParams.setThrottleRate(throttleRate);
 
       if (args[0].equalsIgnoreCase("-l"))
       {
@@ -124,10 +127,14 @@
          init(perfParams.isSessionTransacted(), perfParams.getQueueLookup(), perfParams.getConnectionFactoryLookup(), perfParams.isDupsOk());
          start = System.currentTimeMillis();
          log.info("warming up by sending " + perfParams.getNoOfWarmupMessages() + " messages");
-         sendMessages(perfParams.getNoOfWarmupMessages(), perfParams.getMessageSize(), perfParams.getTransactionBatchSize(), perfParams.getDeliveryMode(), perfParams.isSessionTransacted(), false);
+         sendMessages(perfParams.getNoOfWarmupMessages(), perfParams.getTransactionBatchSize(),
+               perfParams.getDeliveryMode(), perfParams.isSessionTransacted(),
+               false, perfParams.getThrottleRate(), perfParams.getMessageSize());
          log.info("warmed up");
          start = System.currentTimeMillis();
-         sendMessages(perfParams.getNoOfMessagesToSend(), perfParams.getMessageSize(), perfParams.getTransactionBatchSize(), perfParams.getDeliveryMode(), perfParams.isSessionTransacted(), true);
+         sendMessages(perfParams.getNoOfMessagesToSend(), perfParams.getTransactionBatchSize(),
+               perfParams.getDeliveryMode(), perfParams.isSessionTransacted(),
+               true, perfParams.getThrottleRate(), perfParams.getMessageSize());
          long end = System.currentTimeMillis();
          displayAverage(perfParams.getNoOfMessagesToSend(), start, end);
       }
@@ -151,7 +158,9 @@
       }
    }
 
-   private void sendMessages(int numberOfMessages, int messageSize, int txBatchSize, int deliveryMode, boolean transacted, boolean display) throws JMSException
+   private void sendMessages(final int numberOfMessages, final int txBatchSize, final int deliveryMode,
+                             final boolean transacted, final boolean display, final int throttleRate,
+                             final int messageSize) throws JMSException
    {
       MessageProducer producer = session.createProducer(queue);
       producer.setDisableMessageID(true);
@@ -161,7 +170,9 @@
       byte[] payload = new byte[messageSize];
       bytesMessage.writeBytes(payload);
       
-      final int modulo = numberOfMessages / 10;
+      final int modulo = 1000;
+      
+      TokenBucketLimiter tbl = throttleRate != -1 ? new TokenBucketLimiter(throttleRate, false): null;
 
       boolean committed = false;
       for (int i = 1; i <= numberOfMessages; i++)
@@ -184,6 +195,11 @@
             double duration = (1.0 * System.currentTimeMillis() - start) / 1000;
             log.info(String.format("sent %6d messages in %2.2fs", i, duration));
          }
+         
+         if (tbl != null)
+         {
+            tbl.limit();
+         }
       }
       if (transacted && !committed)
       {
@@ -266,7 +282,7 @@
          this.countDownLatch = countDownLatch;
          this.perfParams = perfParams;
          warmingUp = perfParams.getNoOfWarmupMessages() > 0;
-         this.modulo = perfParams.getNoOfMessagesToSend() / 10;
+         this.modulo = 1000;
       }
 
       public void onMessage(final Message message)

Modified: trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java	2008-05-29 16:19:44 UTC (rev 4344)
+++ trunk/examples/jms/src/org/jboss/jms/util/PerfParams.java	2008-05-29 16:30:30 UTC (rev 4345)
@@ -44,13 +44,14 @@
    private String queueLookup = "/queue/testPerfQueue";
    private String connectionFactoryLookup = "/ConnectionFactory";
    private boolean dupsOk;
+   private int throttleRate;
 
    public int getNoOfMessagesToSend()
    {
       return noOfMessagesToSend;
    }
 
-   public void setNoOfMessagesToSend(int noOfMessagesToSend)
+   public void setNoOfMessagesToSend(final int noOfMessagesToSend)
    {
       this.noOfMessagesToSend = noOfMessagesToSend;
    }
@@ -60,7 +61,7 @@
       return noOfWarmupMessages;
    }
 
-   public void setNoOfWarmupMessages(int noOfWarmupMessages)
+   public void setNoOfWarmupMessages(final int noOfWarmupMessages)
    {
       this.noOfWarmupMessages = noOfWarmupMessages;
    }
@@ -80,7 +81,7 @@
       return deliveryMode;
    }
 
-   public void setDeliveryMode(int deliveryMode)
+   public void setDeliveryMode(final int deliveryMode)
    {
       this.deliveryMode = deliveryMode;
    }
@@ -90,7 +91,7 @@
       return isSessionTransacted;
    }
 
-   public void setSessionTransacted(boolean sessionTransacted)
+   public void setSessionTransacted(final boolean sessionTransacted)
    {
       isSessionTransacted = sessionTransacted;
    }
@@ -100,7 +101,7 @@
       return transactionBatchSize;
    }
 
-   public void setTransactionBatchSize(int transactionBatchSize)
+   public void setTransactionBatchSize(final int transactionBatchSize)
    {
       this.transactionBatchSize = transactionBatchSize;
    }
@@ -110,7 +111,7 @@
       return drainQueue;
    }
 
-   public void setDrainQueue(boolean drainQueue)
+   public void setDrainQueue(final boolean drainQueue)
    {
       this.drainQueue = drainQueue;
    }
@@ -120,7 +121,7 @@
       return queueLookup;
    }
 
-   public void setQueueLookup(String queueLookup)
+   public void setQueueLookup(final String queueLookup)
    {
       this.queueLookup = queueLookup;
    }
@@ -130,7 +131,7 @@
       return connectionFactoryLookup;
    }
 
-   public void setConnectionFactoryLookup(String connectionFactoryLookup)
+   public void setConnectionFactoryLookup(final String connectionFactoryLookup)
    {
       this.connectionFactoryLookup = connectionFactoryLookup;
    }
@@ -140,19 +141,29 @@
       return dupsOk;
    }
 
-   public void setDupsOk(boolean dupsOk)
+   public void setDupsOk(final boolean dupsOk)
    {
       this.dupsOk = dupsOk;
    }
+   
+   public int getThrottleRate()
+   {
+      return throttleRate;
+   }
+   
+   public void setThrottleRate(final int throttleRate)
+   {
+      this.throttleRate = throttleRate;
+   }
 
    public String toString()
    {
-      return "message to send = " + noOfMessagesToSend + ", messages to warm up = " + noOfWarmupMessages + ", message size = " + messageSize + 
-               ", DeliveryMode = " + (deliveryMode == DeliveryMode.PERSISTENT ? "PERSISTENT" : "NON_PERSISTENT") + 
-               ", session transacted = " + isSessionTransacted + (isSessionTransacted ? ", transaction batch size = " + transactionBatchSize : "") +
-               ", drain queue = " + drainQueue +
-               ", queue lookup = " + queueLookup + ", connection factory lookup = " + connectionFactoryLookup +
-               ", Session Acknowledge mode = " + (dupsOk ? "DUPS_OK_ACKNOWLEDGE" : "AUTO_ACKNOWLEDGE");
+      return "message to send = " + noOfMessagesToSend + ", DeliveryMode = " +
+              (deliveryMode == DeliveryMode.PERSISTENT ? "PERSISTENT" : "NON_PERSISTENT") + ", session transacted = " + isSessionTransacted +
+              (isSessionTransacted ? ", transaction batch size = " + transactionBatchSize : "") + ", drain queue = " + drainQueue +
+              ", queue lookup = " + queueLookup + ", connection factory lookup = " + connectionFactoryLookup +
+              ", Session Acknowledge mode = " + (dupsOk ? "DUPS_OK_ACKNOWLEDGE" : "AUTO_ACKNOWLEDGE") + 
+              ", Throttle rate = " + throttleRate;
    }
 
 

Modified: trunk/src/config/jbm-jndi.xml
===================================================================
--- trunk/src/config/jbm-jndi.xml	2008-05-29 16:19:44 UTC (rev 4344)
+++ trunk/src/config/jbm-jndi.xml	2008-05-29 16:30:30 UTC (rev 4345)
@@ -5,6 +5,7 @@
    </connection-factory>
 
    <connection-factory name="ConnectionFactory">
+      <entry name="ConnectionFactory"/>
       <entry name="/ConnectionFactory"/>
       <entry name="/XAConnectionFactory"/>
       <entry name="java:/ConnectionFactory"/>
@@ -46,6 +47,9 @@
 
    </connection-factory>
 
+   <queue name="MyQueue">
+      <entry name="MyQueue"/>
+   </queue>
    <queue name="DLQ">
       <entry name="/queue/DLQ"/>
    </queue>




More information about the jboss-cvs-commits mailing list