org.apache.activemq
Class ActiveMQMessageProducer

java.lang.Object
  extended by org.apache.activemq.ActiveMQMessageProducerSupport
      extended by 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 a MessageProducer object to send messages to a destination. A MessageProducer object is created by passing a Destination 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.

See Also:
TopicPublisher, QueueSender, Session.createProducer(javax.jms.Destination)

Field Summary
protected  boolean closed
           
protected  ProducerInfo info
           
 
Fields inherited from class org.apache.activemq.ActiveMQMessageProducerSupport
defaultDeliveryMode, defaultPriority, defaultTimeToLive, disableMessageID, disableMessageTimestamp, sendTimeout, session
 
Constructor Summary
protected ActiveMQMessageProducer(ActiveMQSession session, ProducerId producerId, ActiveMQDestination destination, int sendTimeout)
           
 
Method Summary
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 this MessageProducer.
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, AsyncCallback onComplete)
           
 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(Message message, AsyncCallback onComplete)
           
 void send(Message message, int deliveryMode, int priority, long timeToLive, 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 bus
 String toString()
           
 
Methods inherited from class org.apache.activemq.ActiveMQMessageProducerSupport
getDeliveryMode, getDisableMessageID, getDisableMessageTimestamp, getPriority, getSendTimeout, getTimeToLive, send, send, send, setDeliveryMode, setDisableMessageID, setDisableMessageTimestamp, setPriority, setSendTimeout, setTimeToLive
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

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 interface StatsCapable
Returns:
the Stats for this object

getProducerStats

public JMSProducerStatsImpl getProducerStats()

getDestination

public Destination getDestination()
                           throws JMSException
Gets the destination associated with this MessageProducer.

Specified by:
getDestination in interface MessageProducer
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 interface MessageProducer
Specified by:
close in interface Closeable
Throws:
JMSException - if the JMS provider fails to close the producer due to some internal error.

dispose

public void dispose()
Specified by:
dispose in interface Disposable

checkClosed

protected void checkClosed()
                    throws IllegalStateException
Check if the instance of this producer has been closed.

Specified by:
checkClosed in class ActiveMQMessageProducerSupport
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 interface MessageProducer
Parameters:
destination - the destination to send this message to
message - the message to send
deliveryMode - the delivery mode to use
priority - the priority for this message
timeToLive - 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

toString

public String toString()
Overrides:
toString in class Object

onProducerAck

public void onProducerAck(ProducerAck pa)


Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.