public synchronized void start() throws JMSException { if (!running) { rate.reset(); running = true; if (!connectionPerMessage) { connection = factory.createConnection(); connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); consumer = session.createConsumer(getConsumeDestination()); producer = session.createProducer(getSendDestination()); producer.setDeliveryMode(this.deliveryMode); } Thread t = new Thread(this); t.setName(name); t.start(); } }