package cern.cmw.mom.test;
import cern.cmw.mom.pubsub.*;
import cern.cmw.mom.util.TopicAdminHelper;
/**
* Message producer test example. Usage : java Producer msg_size msg_nr delay.
* Publishes msg_nr messages of msg _size bytes on a predefined topic
* CMW.TEMP.
* @see Consumer
*/
public class Producer {
private Publisher pub = null;
private int size = 0;
private int number = 0;
private int delay = 0;
private final static String TOPIC = "CMW.TEMP.THROUGHPUT";
/**
* Constructor Producer
*
*
* @param s
* @param n
* @param d
*
*/
public Producer(int s, int n, int d) {
try {
size = s;
number = n;
delay = d;
pub = PubSubFactory.publisher();
publish();
pub.close();
} catch (MOMException me) {
me.printStackTrace();
}
}
/**
* Method publish
*
*
*/
public void publish() {
SerializableByteArray body = new SerializableByteArray(size);
javax.jms.ObjectMessage message = null;
try {
message = pub.createObjectMessage();
message.setObject(body);
} catch (javax.jms.JMSException jmse) {
jmse.printStackTrace();
}
System.out.println("Time : " + System.currentTimeMillis());
try {
for (int i = 0; i < number; i++) {
pub.publish(TOPIC, message);
if (delay > 0) {
try {
Thread.sleep(delay * 1000);
} catch (Exception e) {}
}
}
} catch (javax.jms.JMSException jmse) {
jmse.printStackTrace();
} catch (javax.naming.NamingException ne) {
ne.printStackTrace();
}
System.out.println("Time : " + System.currentTimeMillis());
}
/**
* Method printUsage
*
*/
private static void printUsage() {
System.err.println("usage: java Producer <message size> <message nr> <delay>");
}
/**
* Method main
*
*
* @param args
*
*/
public static void main(String[] args) {
// Is there anything to do?
if (args.length != 3) {
printUsage();
System.exit(1);
}
int size = Integer.parseInt(args[0]);
int number = Integer.parseInt(args[1]);
int delay = Integer.parseInt(args[2]);
//cmw.mom.pubsub.impl.Logger.LOG_ENABLED = true;
Producer producer1 = new Producer(size, number, delay);
}
}
/*--- Formatted in Sun Java Convention Style on Fri, Aug 3, '01 ---*/
/*------ Formatted by Jindent 3.23 Gold 1.02 --- http://www.jindent.de ------*/