Class ActiveMQMessageProducer
- java.lang.Object
-
- org.apache.activemq.ActiveMQMessageProducerSupport
-
- org.apache.activemq.ActiveMQMessageProducer
-
- All Implemented Interfaces:
MessageProducer
,Closeable
,Disposable
,StatsCapable
- Direct Known Subclasses:
ActiveMQQueueSender
,ActiveMQTopicPublisher
public class ActiveMQMessageProducer extends ActiveMQMessageProducerSupport implements StatsCapable, Disposable
A client uses aMessageProducer
object to send messages to a destination. AMessageProducer
object is created by passing aDestination
object to a message-producer creation method supplied by a session.MessageProducer
is the parent interface for all message producers.A client also has the option of creating a message producer without supplying a destination. In this case, a destination must be provided with every send operation. A typical use for this kind of message producer is to send replies to requests using the request's
JMSReplyTo
destination.A client can specify a default delivery mode, priority, and time to live for messages sent by a message producer. It can also specify the delivery mode, priority, and time to live for an individual message.
A client can specify a time-to-live value in milliseconds for each message it sends. This value defines a message expiration time that is the sum of the message's time-to-live and the GMT when it is sent (for transacted sends, this is the time the client sends the message, not the time the transaction is committed).
A JMS provider should do its best to expire messages accurately; however, the JMS API does not define the accuracy provided.
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
closed
protected ProducerInfo
info
-
Fields inherited from class org.apache.activemq.ActiveMQMessageProducerSupport
defaultDeliveryMode, defaultPriority, defaultTimeToLive, disableMessageID, disableMessageTimestamp, sendTimeout, session
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ActiveMQMessageProducer(ActiveMQSession session, ProducerId producerId, ActiveMQDestination destination, int sendTimeout)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
checkClosed()
Check if the instance of this producer has been closed.void
close()
Closes the message producer.void
dispose()
Destination
getDestination()
Gets the destination associated with thisMessageProducer
.protected long
getMessageSequence()
protected ProducerInfo
getProducerInfo()
JMSProducerStatsImpl
getProducerStats()
protected long
getStartTime()
StatsImpl
getStats()
MessageTransformer
getTransformer()
void
onProducerAck(ProducerAck pa)
void
send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive)
Sends a message to a destination for an unidentified message producer, specifying delivery mode, priority and time to live.void
send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive, AsyncCallback onComplete)
void
send(Destination destination, Message message, AsyncCallback onComplete)
void
send(Message message, int deliveryMode, int priority, long timeToLive, AsyncCallback onComplete)
void
send(Message message, AsyncCallback onComplete)
protected void
setMessageSequence(AtomicLong messageSequence)
protected void
setProducerInfo(ProducerInfo info)
void
setTransformer(MessageTransformer transformer)
Sets the transformer used to transform messages before they are sent on to the JMS busString
toString()
-
Methods inherited from class org.apache.activemq.ActiveMQMessageProducerSupport
getDeliveryMode, getDisableMessageID, getDisableMessageTimestamp, getPriority, getSendTimeout, getTimeToLive, send, send, send, setDeliveryMode, setDisableMessageID, setDisableMessageTimestamp, setPriority, setSendTimeout, setTimeToLive
-
-
-
-
Field Detail
-
info
protected ProducerInfo info
-
closed
protected boolean closed
-
-
Constructor Detail
-
ActiveMQMessageProducer
protected ActiveMQMessageProducer(ActiveMQSession session, ProducerId producerId, ActiveMQDestination destination, int sendTimeout) throws JMSException
- Throws:
JMSException
-
-
Method Detail
-
getStats
public StatsImpl getStats()
- Specified by:
getStats
in interfaceStatsCapable
- Returns:
- the Stats for this object
-
getProducerStats
public JMSProducerStatsImpl getProducerStats()
-
getDestination
public Destination getDestination() throws JMSException
Gets the destination associated with thisMessageProducer
.- Specified by:
getDestination
in interfaceMessageProducer
- Returns:
- this producer's
Destination/
- Throws:
JMSException
- if the JMS provider fails to close the producer due to some internal error.- Since:
- 1.1
-
close
public void close() throws JMSException
Closes the message producer.Since a provider may allocate some resources on behalf of a
MessageProducer
outside the Java virtual machine, clients should close them when they are not needed. Relying on garbage collection to eventually reclaim these resources may not be timely enough.- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceMessageProducer
- Throws:
JMSException
- if the JMS provider fails to close the producer due to some internal error.
-
dispose
public void dispose()
- Specified by:
dispose
in interfaceDisposable
-
checkClosed
protected void checkClosed() throws IllegalStateException
Check if the instance of this producer has been closed.- Specified by:
checkClosed
in classActiveMQMessageProducerSupport
- Throws:
IllegalStateException
-
send
public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException
Sends a message to a destination for an unidentified message producer, specifying delivery mode, priority and time to live.Typically, a message producer is assigned a destination at creation time; however, the JMS API also supports unidentified message producers, which require that the destination be supplied every time a message is sent.
- Specified by:
send
in interfaceMessageProducer
- Parameters:
destination
- the destination to send this message tomessage
- the message to senddeliveryMode
- the delivery mode to usepriority
- the priority for this messagetimeToLive
- the message's lifetime (in milliseconds)- Throws:
JMSException
- if the JMS provider fails to send the message due to some internal error.UnsupportedOperationException
- if an invalid destination is specified.InvalidDestinationException
- if a client uses this method with an invalid destination.- Since:
- 1.1
- See Also:
Session.createProducer(javax.jms.Destination)
-
send
public void send(Message message, AsyncCallback onComplete) throws JMSException
- Throws:
JMSException
-
send
public void send(Destination destination, Message message, AsyncCallback onComplete) throws JMSException
- Throws:
JMSException
-
send
public void send(Message message, int deliveryMode, int priority, long timeToLive, AsyncCallback onComplete) throws JMSException
- Throws:
JMSException
-
send
public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive, AsyncCallback onComplete) throws JMSException
- Throws:
JMSException
-
getTransformer
public MessageTransformer getTransformer()
-
setTransformer
public void setTransformer(MessageTransformer transformer)
Sets the transformer used to transform messages before they are sent on to the JMS bus
-
getStartTime
protected long getStartTime()
- Returns:
- the time in milli second when this object was created.
-
getMessageSequence
protected long getMessageSequence()
- Returns:
- Returns the messageSequence.
-
setMessageSequence
protected void setMessageSequence(AtomicLong messageSequence)
- Parameters:
messageSequence
- The messageSequence to set.
-
getProducerInfo
protected ProducerInfo getProducerInfo()
- Returns:
- Returns the info.
-
setProducerInfo
protected void setProducerInfo(ProducerInfo info)
- Parameters:
info
- The info to set
-
onProducerAck
public void onProducerAck(ProducerAck pa)
-
-