001 /** 002 * 003 * Copyright 2005 Protique Ltd 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 * 017 **/ 018 package org.activemq.pool; 019 020 import javax.jms.Destination; 021 import javax.jms.JMSException; 022 import javax.jms.Message; 023 import javax.jms.MessageProducer; 024 025 import org.activemq.ActiveMQMessageProducer; 026 027 /** 028 * A pooled {@link MessageProducer} 029 * 030 * @version $Revision: 1.1 $ 031 */ 032 public class PooledProducer implements MessageProducer { 033 private ActiveMQMessageProducer messageProducer; 034 private Destination destination; 035 private int deliveryMode; 036 private boolean disableMessageID; 037 private boolean disableMessageTimestamp; 038 private int priority; 039 private long timeToLive; 040 041 public PooledProducer(ActiveMQMessageProducer messageProducer, Destination destination) throws JMSException { 042 this.messageProducer = messageProducer; 043 this.destination = destination; 044 045 this.deliveryMode = messageProducer.getDeliveryMode(); 046 this.disableMessageID = messageProducer.getDisableMessageID(); 047 this.disableMessageTimestamp = messageProducer.getDisableMessageTimestamp(); 048 this.priority = messageProducer.getPriority(); 049 this.timeToLive = messageProducer.getTimeToLive(); 050 } 051 052 public void close() throws JMSException { 053 } 054 055 public void send(Destination destination, Message message) throws JMSException { 056 send(destination, message, getDeliveryMode(), getPriority(), getTimeToLive()); 057 } 058 059 public void send(Message message) throws JMSException { 060 send(destination, message, getDeliveryMode(), getPriority(), getTimeToLive()); 061 } 062 063 public void send(Message message, int deliveryMode, int priority, long timeToLive) throws JMSException { 064 send(destination, message, deliveryMode, priority, timeToLive); 065 } 066 067 public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException { 068 if (destination == null) { 069 destination = this.destination; 070 } 071 ActiveMQMessageProducer messageProducer = getMessageProducer(); 072 073 // just in case let only one thread send at once 074 synchronized (messageProducer) { 075 messageProducer.send(destination, message, deliveryMode, priority, timeToLive); 076 } 077 } 078 079 public Destination getDestination() { 080 return destination; 081 } 082 083 public int getDeliveryMode() { 084 return deliveryMode; 085 } 086 087 public void setDeliveryMode(int deliveryMode) { 088 this.deliveryMode = deliveryMode; 089 } 090 091 public boolean getDisableMessageID() { 092 return disableMessageID; 093 } 094 095 public void setDisableMessageID(boolean disableMessageID) { 096 this.disableMessageID = disableMessageID; 097 } 098 099 public boolean getDisableMessageTimestamp() { 100 return disableMessageTimestamp; 101 } 102 103 public void setDisableMessageTimestamp(boolean disableMessageTimestamp) { 104 this.disableMessageTimestamp = disableMessageTimestamp; 105 } 106 107 public int getPriority() { 108 return priority; 109 } 110 111 public void setPriority(int priority) { 112 this.priority = priority; 113 } 114 115 public long getTimeToLive() { 116 return timeToLive; 117 } 118 119 public void setTimeToLive(long timeToLive) { 120 this.timeToLive = timeToLive; 121 } 122 123 // Implementation methods 124 //------------------------------------------------------------------------- 125 protected ActiveMQMessageProducer getMessageProducer() { 126 return messageProducer; 127 } 128 }