package com.google.pubsub.jms.light.session;
import com.google.common.collect.Sets;
import com.google.pubsub.jms.light.PubSubConnection;
import com.google.pubsub.jms.light.PubSubMessageProducer;
import java.util.Set;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
/**
* Default implementation of {@link javax.jms.Session} producer creations.
*
* @author Maksym Prokhorenko
*/
public abstract class AbstractSessionProducerCreator extends AbstractSessionQueueCreator {
private final Set<MessageProducer> producers = Sets.newConcurrentHashSet();
/**
* Default constructor.
* @param connection is a jms connection.
* @param transacted is an indicator whether the session in transacted mode.
* @param acknowledgeMode is an acknowledgement mode {@link javax.jms.Session#AUTO_ACKNOWLEDGE},
* {@link javax.jms.Session#CLIENT_ACKNOWLEDGE},
* {@link javax.jms.Session#SESSION_TRANSACTED}.
*/
public AbstractSessionProducerCreator(
final PubSubConnection connection,
final boolean transacted,
final int acknowledgeMode) {
super(connection, transacted, acknowledgeMode);
}
@Override
public MessageProducer createProducer(final Destination destination) throws JMSException {
return new PubSubMessageProducer(this, destination);
}
protected void closeProducers() throws JMSException {
for (final MessageProducer producer : producers) {
producer.close();
}
}
}