package com.nvarghese.beowulf.common.jms;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
public class JmsQueueSender {
private QueueConnection qConnect = null;
private QueueSession qSession = null;
private Queue queue = null;
private QueueSender producer;
private AtomicBoolean initialized = new AtomicBoolean(false);
public JmsQueueSender(Queue queue) {
this.queue = queue;
}
void initialize(ConnectionFactory cf) throws JMSException {
qConnect = (QueueConnection) cf.createConnection();
qSession = (QueueSession) qConnect.createSession(false, Session.AUTO_ACKNOWLEDGE);
producer = (QueueSender) qSession.createProducer(queue);
initialized.set(true);
}
void initialize(ConnectionFactory cf, String userName, String password) throws JMSException {
qConnect = (QueueConnection) cf.createConnection(userName, password);
qSession = (QueueSession) qConnect.createSession(false, Session.AUTO_ACKNOWLEDGE);
producer = (QueueSender) qSession.createProducer(queue);
initialized.set(true);
}
public QueueSession getSession() {
return qSession;
}
public QueueSender getProducer() {
return producer;
}
public void startConnection() throws JMSException {
qConnect.start();
}
public void shutdownAll() throws JMSException {
producer.close();
qSession.close();
qConnect.stop();
qConnect.close();
}
}