All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jencks.pool.PooledProducer Maven / Gradle / Ivy

There is a newer version: 2.2
Show newest version
/** 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 * 
 **/
package org.jencks.pool;

import javax.jms.MessageProducer;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;

/**
 * A pooled {@link javax.jms.MessageProducer}
 *
 * @version $Revision$
 */
public class PooledProducer implements MessageProducer
{
  private MessageProducer messageProducer;
  private Destination destination;
  private int deliveryMode;
  private boolean disableMessageID;
  private boolean disableMessageTimestamp;
  private int priority;
  private long timeToLive;

  public PooledProducer(final MessageProducer messageProducer,
                        final Destination destination) throws JMSException
  {
    this.messageProducer = messageProducer;
    this.destination = destination;

    this.deliveryMode = messageProducer.getDeliveryMode();
    this.disableMessageID = messageProducer.getDisableMessageID();
    this.disableMessageTimestamp = messageProducer.getDisableMessageTimestamp();
    this.priority = messageProducer.getPriority();
    this.timeToLive = messageProducer.getTimeToLive();
  }

  public void close() throws JMSException
  {
  }

  public void send(final Destination destination, final Message message)
      throws JMSException
  {
    send(destination, message, getDeliveryMode(), getPriority(), getTimeToLive());
  }

  public void send(final Message message) throws JMSException
  {
    send(this.destination, message, getDeliveryMode(), getPriority(), getTimeToLive());
  }

  public void send(final Message message, final int deliveryMode, final int priority,
                   final long timeToLive) throws JMSException
  {
    send(this.destination, message, deliveryMode, priority, timeToLive);
  }

  public void send(Destination destination, final Message message, final int deliveryMode,
                   final int priority, final long timeToLive) throws JMSException
  {
    if (destination == null) {
      destination = this.destination;
    }
    MessageProducer messageProducer = getMessageProducer();

    // just in case let only one thread send at once
    synchronized (messageProducer) {
      messageProducer.send(destination, message, deliveryMode, priority, timeToLive);
    }
  }

  public Destination getDestination()
  {
    return this.destination;
  }

  public int getDeliveryMode()
  {
    return this.deliveryMode;
  }

  public void setDeliveryMode(final int deliveryMode)
  {
    this.deliveryMode = deliveryMode;
  }

  public boolean getDisableMessageID()
  {
    return this.disableMessageID;
  }

  public void setDisableMessageID(final boolean disableMessageID)
  {
    this.disableMessageID = disableMessageID;
  }

  public boolean getDisableMessageTimestamp()
  {
    return this.disableMessageTimestamp;
  }

  public void setDisableMessageTimestamp(final boolean disableMessageTimestamp)
  {
    this.disableMessageTimestamp = disableMessageTimestamp;
  }

  public int getPriority()
  {
    return this.priority;
  }

  public void setPriority(final int priority)
  {
    this.priority = priority;
  }

  public long getTimeToLive()
  {
    return this.timeToLive;
  }

  public void setTimeToLive(final long timeToLive)
  {
    this.timeToLive = timeToLive;
  }

  // Implementation methods
  //-------------------------------------------------------------------------
  protected MessageProducer getMessageProducer()
  {
    return this.messageProducer;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy