Class ActiveMQMessageProducer

  • All Implemented Interfaces:
    AutoCloseable, javax.jms.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 Detail

      • closed

        protected boolean closed
    • Constructor Detail

      • ActiveMQMessageProducer

        protected ActiveMQMessageProducer​(ActiveMQSession session,
                                          ProducerId producerId,
                                          ActiveMQDestination destination,
                                          int sendTimeout)
                                   throws javax.jms.JMSException
        Throws:
        javax.jms.JMSException
    • Method Detail

      • getDestination

        public javax.jms.Destination getDestination()
                                             throws javax.jms.JMSException
        Gets the destination associated with this MessageProducer.
        Specified by:
        getDestination in interface javax.jms.MessageProducer
        Returns:
        this producer's Destination/
        Throws:
        javax.jms.JMSException - if the JMS provider fails to close the producer due to some internal error.
        Since:
        1.1
      • close

        public void close()
                   throws javax.jms.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 AutoCloseable
        Specified by:
        close in interface Closeable
        Specified by:
        close in interface javax.jms.MessageProducer
        Throws:
        javax.jms.JMSException - if the JMS provider fails to close the producer due to some internal error.
      • checkClosed

        protected void checkClosed()
                            throws javax.jms.IllegalStateException
        Check if the instance of this producer has been closed.
        Specified by:
        checkClosed in class ActiveMQMessageProducerSupport
        Throws:
        javax.jms.IllegalStateException
      • send

        public void send​(javax.jms.Destination destination,
                         javax.jms.Message message,
                         int deliveryMode,
                         int priority,
                         long timeToLive)
                  throws javax.jms.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 javax.jms.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:
        javax.jms.JMSException - if the JMS provider fails to send the message due to some internal error.
        UnsupportedOperationException - if an invalid destination is specified.
        javax.jms.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​(javax.jms.Message message,
                         javax.jms.CompletionListener completionListener)
                  throws javax.jms.JMSException
        Specified by:
        send in interface javax.jms.MessageProducer
        Parameters:
        message - the message to send
        CompletionListener - to callback
        Throws:
        javax.jms.JMSException - if the JMS provider fails to send the message due to some internal error.
        UnsupportedOperationException - if an invalid destination is specified.
        javax.jms.InvalidDestinationException - if a client uses this method with an invalid destination.
        Since:
        2.0
        See Also:
        Session.createProducer(javax.jms.Destination)
      • send

        public void send​(javax.jms.Message message,
                         int deliveryMode,
                         int priority,
                         long timeToLive,
                         javax.jms.CompletionListener completionListener)
                  throws javax.jms.JMSException
        Specified by:
        send in interface javax.jms.MessageProducer
        Throws:
        javax.jms.JMSException
      • send

        public void send​(javax.jms.Destination destination,
                         javax.jms.Message message,
                         javax.jms.CompletionListener completionListener)
                  throws javax.jms.JMSException
        Specified by:
        send in interface javax.jms.MessageProducer
        Throws:
        javax.jms.JMSException
      • send

        public void send​(javax.jms.Destination destination,
                         javax.jms.Message message,
                         int deliveryMode,
                         int priority,
                         long timeToLive,
                         javax.jms.CompletionListener completionListener)
                  throws javax.jms.JMSException
        Specified by:
        send in interface javax.jms.MessageProducer
        Throws:
        javax.jms.JMSException
      • send

        public void send​(javax.jms.Message message,
                         AsyncCallback onComplete)
                  throws javax.jms.JMSException
        Throws:
        javax.jms.JMSException
      • send

        public void send​(javax.jms.Destination destination,
                         javax.jms.Message message,
                         AsyncCallback onComplete)
                  throws javax.jms.JMSException
        Throws:
        javax.jms.JMSException
      • send

        public void send​(javax.jms.Message message,
                         int deliveryMode,
                         int priority,
                         long timeToLive,
                         AsyncCallback onComplete)
                  throws javax.jms.JMSException
        Throws:
        javax.jms.JMSException
      • send

        public void send​(javax.jms.Destination destination,
                         javax.jms.Message message,
                         int deliveryMode,
                         int priority,
                         long timeToLive,
                         AsyncCallback onComplete)
                  throws javax.jms.JMSException
        Throws:
        javax.jms.JMSException
      • send

        public void send​(javax.jms.Destination destination,
                         javax.jms.Message message,
                         int deliveryMode,
                         int priority,
                         long timeToLive,
                         boolean disableMessageID,
                         boolean disableMessageTimestamp,
                         AsyncCallback onComplete)
                  throws javax.jms.JMSException
        Throws:
        javax.jms.JMSException
      • 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)