Class 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 Detail

      • closed

        protected boolean closed
    • Method Detail

      • getDestination

        public Destination getDestination()
                                   throws JMSException
        Gets the destination associated with this MessageProducer.
        Specified by:
        getDestination in interface MessageProducer
        this producer's Destination/
        JMSException - if the JMS provider fails to close the producer due to some internal error.
      • 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 Closeable
        Specified by:
        close in interface MessageProducer
        JMSException - if the JMS provider fails to close the producer due to some internal error.
      • 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
        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)
        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.
        See Also:
      • 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()
        the time in milli second when this object was created.
      • getMessageSequence

        protected long getMessageSequence()
        Returns the messageSequence.
      • setMessageSequence

        protected void setMessageSequence​(AtomicLong messageSequence)
        messageSequence - The messageSequence to set.
      • getProducerInfo

        protected ProducerInfo getProducerInfo()
        Returns the info.
      • setProducerInfo

        protected void setProducerInfo​(ProducerInfo info)
        info - The info to set
      • onProducerAck

        public void onProducerAck​(ProducerAck pa)