package com.google.pubsub.jms.light;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Topic;
import javax.jms.TopicPublisher;
/**
* Default PubSub {@link TopicPublisher} implementation.
*
* @author Maksym Prokhorenko
*/
public class PubSubTopicPublisher extends PubSubMessageProducer implements TopicPublisher {
/**
* Default constructor.
* @param session is a jms session {@link javax.jms.Session}.
* @param topic is a jms topic.
* @throws JMSException in case {@link PubSubMessageProducer} doesn't support destination
* or destination object fails to return topic/queue name.
*/
public PubSubTopicPublisher(final PubSubSession session, final Topic topic) throws JMSException {
super(session, topic);
}
@Override
public Topic getTopic() throws JMSException {
return (Topic) getDestination();
}
@Override
public void publish(final Message message) throws JMSException {
publish(getTopic(), message, getDeliveryMode(), getPriority(), getTimeToLive());
}
@Override
public void publish(final Topic topic, final Message message) throws JMSException {
publish(topic, message, getDeliveryMode(), getPriority(), getTimeToLive());
}
@Override
public void publish(
final Message message,
final int deliveryMode,
final int priority,
final long timeToLive) throws JMSException {
publish(getTopic(), message, deliveryMode, priority, timeToLive);
}
@Override
public void publish(
final Topic topic,
final Message message,
final int deliveryMode,
final int priority,
final long timeToLive) throws JMSException {
send(topic, message, deliveryMode, priority, timeToLive);
}
}