    1   /***
    2    *
    3    * Copyright 2004 Protique Ltd
    4    *
    5    * Licensed under the Apache License, Version 2.0 (the "License");
    6    * you may not use this file except in compliance with the License.
    7    * You may obtain a copy of the License at
    8    *
    9    * http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   **/
    18  package org.codehaus.activemq.tool;
    19
    20  import javax.jms.DeliveryMode;
    21  import javax.jms.Message;
    22  import javax.jms.MessageProducer;
    23  import java.util.Date;
    24
    25  /***
    26   * A simple tool for publishing messages
    27   *
    28   * @version $Revision: 1.6 $
    29   */
    30  public class ProducerTool extends ToolSupport {
    31
    32      protected MessageProducer producer;
    33      protected int messageCount = 10;
    34      protected long sleepTime = 0L;
    35      protected boolean verbose = true;
    36
    37      public static void main(String[] args) {
    38          ProducerTool tool = new ProducerTool();
    39          if (args.length > 0) {
    40              tool.url = args[0];
    41          }
    42          if (args.length > 1) {
    43              tool.topic = args[1].equalsIgnoreCase("true");
    44          }
    45          if (args.length > 2) {
    46              tool.subject = args[2];
    47          }
    48          if (args.length > 3) {
    49              tool.durable = args[3].equalsIgnoreCase("true");
    50          }
    51          tool.run();
    52      }
    53
    54      public void run() {
    55          try {
    56              System.out.println("Connecting to URL: " + url);
    57              System.out.println("Publishing to " + (topic ? "topic" : "queue") + ": " + subject);
    58              System.out.println("Using " + (durable ? "durable" : "non-durable") + " publishing");
    59
    60              createSession();
    61              producer = session.createProducer(destination);
    62              if (durable) {
    63                  producer.setDeliveryMode(DeliveryMode.PERSISTENT);
    64              }
    65              else {
    66                  producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    67              }
    68              connection.start();
    69
    70              sendLoop();
    71
    72              System.out.println("Done.");
    73              close();
    74          }
    75          catch (Exception e) {
    76              System.out.println("Caught: " + e);
    77              e.printStackTrace();
    78          }
    79      }
    80
    81      protected void sendLoop() throws Exception {
    82          for (int i = 0; i < messageCount; i++) {
    83              Message message = session.createTextMessage("Message: " + i + " sent at: " + new Date());
    84
    85              if (verbose) {
    86                  System.out.println("Sending message: " + message);
    87              }
    88
    89              producer.send(message);
    90              Thread.sleep(sleepTime);
    91          }
    92      }
    93  }