1 18 package org.apache.activemq.tool; 19 20 import java.util.Date ; 21 22 import javax.jms.Connection ; 23 import javax.jms.DeliveryMode ; 24 import javax.jms.JMSException ; 25 import javax.jms.MessageProducer ; 26 import javax.jms.Session ; 27 import javax.jms.TextMessage ; 28 29 34 public class ProducerTool extends ToolSupport { 35 36 protected int messageCount = 10; 37 protected long sleepTime = 0L; 38 protected boolean verbose = true; 39 protected int messageSize = 255; 40 41 public static void main(String [] args) { 42 runTool(args, new ProducerTool()); 43 } 44 45 protected static void runTool(String [] args, ProducerTool tool) { 46 if (args.length > 0) { 47 tool.url = args[0]; 48 } 49 if (args.length > 1) { 50 tool.topic = args[1].equalsIgnoreCase("true"); 51 } 52 if (args.length > 2) { 53 tool.subject = args[2]; 54 } 55 if (args.length > 3) { 56 tool.durable = args[3].equalsIgnoreCase("true"); 57 } 58 if (args.length > 4) { 59 tool.messageCount = Integer.parseInt(args[4]); 60 } 61 if (args.length > 5) { 62 tool.messageSize = Integer.parseInt(args[5]); 63 } 64 tool.run(); 65 } 66 67 public void run() { 68 try { 69 System.out.println("Connecting to URL: " + url); 70 System.out.println("Publishing a Message with size "+messageSize+" to " + (topic ? "topic" : "queue") + ": " + subject); 71 System.out.println("Using " + (durable ? "durable" : "non-durable") + " publishing"); 72 73 Connection connection = createConnection(); 74 Session session = createSession(connection); 75 MessageProducer producer = createProducer(session); 76 78 sendLoop(session, producer); 79 80 System.out.println("Done."); 81 close(connection, session); 82 } 83 catch (Exception e) { 84 System.out.println("Caught: " + e); 85 e.printStackTrace(); 86 } 87 } 88 89 protected MessageProducer createProducer(Session session) throws JMSException { 90 MessageProducer producer = session.createProducer(destination); 91 if (durable) { 92 producer.setDeliveryMode(DeliveryMode.PERSISTENT); 93 } 94 else { 95 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); 96 } 97 return producer; 98 } 99 100 protected void sendLoop(Session session, MessageProducer producer) throws Exception { 101 102 for (int i = 0; i < messageCount; i++) { 103 104 105 TextMessage message = session.createTextMessage(createMessageText(i)); 106 107 if (verbose) { 108 String msg = message.getText(); 109 if( msg.length() > 50 ) 110 msg = msg.substring(0, 50)+"..."; 111 System.out.println("Sending message: " + msg); 112 } 113 114 producer.send(message); 115 Thread.sleep(sleepTime); 116 } 117 producer.send(session.createMessage()); 118 } 119 120 124 private String createMessageText(int index) { 125 StringBuffer buffer = new StringBuffer (messageSize); 126 buffer.append("Message: " + index + " sent at: " + new Date ()); 127 if( buffer.length() > messageSize ) { 128 return buffer.substring(0, messageSize); 129 } 130 for( int i=buffer.length(); i < messageSize; i++) 131 buffer.append(' '); 132 return buffer.toString(); 133 } 134 } 135 | Popular Tags |