@Override public void run() { try { Message message = getMessage(); Destination tq = message.getReplyTo(); RESP resp = process(false, tq); if (resp != null) { Message responseMsg = getSession().createMessage(resp, getPayloadType()); // stamp the message responseMsg.setProperty("TIMESTAMP", System.currentTimeMillis()); // copy the correlation id from the incoming message responseMsg.setCorrelationID(message.getCorrelationID()); if (tq != null) { MessageProducer qsender = getSession().createProducer(tq); try { qsender.send(tq, responseMsg); } finally { qsender.close(); } } } if (isClientAck()) { message.acknowledge(); } } catch (Exception e) { logger.error(e); } }