Class JmsTemplate

    • Constructor Detail

      • JmsTemplate

        public JmsTemplate​(ConnectionFactory connectionFactory)
        Create a new JmsTemplate, given a ConnectionFactory.
        Parameters:
        connectionFactory - the ConnectionFactory to obtain Connections from
    • Method Detail

      • isMessageIdEnabled

        public boolean isMessageIdEnabled()
        Return whether message IDs are enabled.
      • isPubSubNoLocal

        public boolean isPubSubNoLocal()
        Return whether to inhibit the delivery of messages published by its own connection.
      • getReceiveTimeout

        public long getReceiveTimeout()
        Return the timeout to use for receive calls (in milliseconds).
      • setDeliveryDelay

        public void setDeliveryDelay​(long deliveryDelay)
        Set the delivery delay to use for send calls (in milliseconds).

        The default is -1 (no delivery delay passed on to the broker). Note that this feature requires JMS 2.0.

      • getDeliveryDelay

        public long getDeliveryDelay()
        Return the delivery delay to use for send calls (in milliseconds).
      • isExplicitQosEnabled

        public boolean isExplicitQosEnabled()
        If "true", then the values of deliveryMode, priority, and timeToLive will be used when sending a message. Otherwise, the default values, that may be set administratively, will be used.
        Returns:
        true if overriding default values of QOS parameters (deliveryMode, priority, and timeToLive)
        See Also:
        setDeliveryMode(int), setPriority(int), setTimeToLive(long)
      • getDeliveryMode

        public int getDeliveryMode()
        Return the delivery mode to use when sending a message.
      • getPriority

        public int getPriority()
        Return the priority of a message when sending.
      • getTimeToLive

        public long getTimeToLive()
        Return the time-to-live of the message when sending.
      • execute

        @Nullable
        public <T> T execute​(SessionCallback<T> action,
                             boolean startConnection)
                      throws JmsException
        Execute the action specified by the given action object within a JMS Session. Generalized version of execute(SessionCallback), allowing the JMS Connection to be started on the fly.

        Use execute(SessionCallback) for the general case. Starting the JMS Connection is just necessary for receiving messages, which is preferably achieved through the receive methods.

        Parameters:
        action - callback object that exposes the Session
        startConnection - whether to start the Connection
        Returns:
        the result object from working with the Session
        Throws:
        JmsException - if there is any problem
        See Also:
        execute(SessionCallback), receive()
      • execute

        @Nullable
        public <T> T execute​(ProducerCallback<T> action)
                      throws JmsException
        Description copied from interface: JmsOperations
        Send messages to the default JMS destination (or one specified for each send operation). The callback gives access to the JMS Session and MessageProducer in order to perform complex send operations.
        Specified by:
        execute in interface JmsOperations
        Parameters:
        action - callback object that exposes the session/producer pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • execute

        @Nullable
        public <T> T execute​(@Nullable
                             Destination destination,
                             ProducerCallback<T> action)
                      throws JmsException
        Description copied from interface: JmsOperations
        Send messages to a JMS destination. The callback gives access to the JMS Session and MessageProducer in order to perform complex send operations.
        Specified by:
        execute in interface JmsOperations
        Parameters:
        destination - the destination to send messages to
        action - callback object that exposes the session/producer pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • execute

        @Nullable
        public <T> T execute​(String destinationName,
                             ProducerCallback<T> action)
                      throws JmsException
        Description copied from interface: JmsOperations
        Send messages to a JMS destination. The callback gives access to the JMS Session and MessageProducer in order to perform complex send operations.
        Specified by:
        execute in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send messages to (to be resolved to an actual destination by a DestinationResolver)
        action - callback object that exposes the session/producer pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • send

        public void send​(MessageCreator messageCreator)
                  throws JmsException
        Description copied from interface: JmsOperations
        Send a message to the default destination.

        This will only work with a default destination specified!

        Specified by:
        send in interface JmsOperations
        Parameters:
        messageCreator - callback to create a message
        Throws:
        JmsException - checked JMSException converted to unchecked
      • send

        public void send​(Destination destination,
                         MessageCreator messageCreator)
                  throws JmsException
        Description copied from interface: JmsOperations
        Send a message to the specified destination. The MessageCreator callback creates the message given a Session.
        Specified by:
        send in interface JmsOperations
        Parameters:
        destination - the destination to send this message to
        messageCreator - callback to create a message
        Throws:
        JmsException - checked JMSException converted to unchecked
      • send

        public void send​(String destinationName,
                         MessageCreator messageCreator)
                  throws JmsException
        Description copied from interface: JmsOperations
        Send a message to the specified destination. The MessageCreator callback creates the message given a Session.
        Specified by:
        send in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
        messageCreator - callback to create a message
        Throws:
        JmsException - checked JMSException converted to unchecked
      • doSend

        protected void doSend​(Session session,
                              Destination destination,
                              MessageCreator messageCreator)
                       throws JMSException
        Send the given JMS message.
        Parameters:
        session - the JMS Session to operate on
        destination - the JMS Destination to send to
        messageCreator - callback to create a JMS Message
        Throws:
        JMSException - if thrown by JMS API methods
      • doSend

        protected void doSend​(MessageProducer producer,
                              Message message)
                       throws JMSException
        Actually send the given JMS message.
        Parameters:
        producer - the JMS MessageProducer to send with
        message - the JMS Message to send
        Throws:
        JMSException - if thrown by JMS API methods
      • convertAndSend

        public void convertAndSend​(Object message)
                            throws JmsException
        Description copied from interface: JmsOperations
        Send the given object to the default destination, converting the object to a JMS message with a configured MessageConverter.

        This will only work with a default destination specified!

        Specified by:
        convertAndSend in interface JmsOperations
        Parameters:
        message - the object to convert to a message
        Throws:
        JmsException - converted checked JMSException to unchecked
      • convertAndSend

        public void convertAndSend​(Destination destination,
                                   Object message)
                            throws JmsException
        Description copied from interface: JmsOperations
        Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter.
        Specified by:
        convertAndSend in interface JmsOperations
        Parameters:
        destination - the destination to send this message to
        message - the object to convert to a message
        Throws:
        JmsException - converted checked JMSException to unchecked
      • convertAndSend

        public void convertAndSend​(String destinationName,
                                   Object message)
                            throws JmsException
        Description copied from interface: JmsOperations
        Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter.
        Specified by:
        convertAndSend in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
        message - the object to convert to a message
        Throws:
        JmsException - checked JMSException converted to unchecked
      • convertAndSend

        public void convertAndSend​(Object message,
                                   MessagePostProcessor postProcessor)
                            throws JmsException
        Description copied from interface: JmsOperations
        Send the given object to the default destination, converting the object to a JMS message with a configured MessageConverter. The MessagePostProcessor callback allows for modification of the message after conversion.

        This will only work with a default destination specified!

        Specified by:
        convertAndSend in interface JmsOperations
        Parameters:
        message - the object to convert to a message
        postProcessor - the callback to modify the message
        Throws:
        JmsException - checked JMSException converted to unchecked
      • convertAndSend

        public void convertAndSend​(Destination destination,
                                   Object message,
                                   MessagePostProcessor postProcessor)
                            throws JmsException
        Description copied from interface: JmsOperations
        Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter. The MessagePostProcessor callback allows for modification of the message after conversion.
        Specified by:
        convertAndSend in interface JmsOperations
        Parameters:
        destination - the destination to send this message to
        message - the object to convert to a message
        postProcessor - the callback to modify the message
        Throws:
        JmsException - checked JMSException converted to unchecked
      • convertAndSend

        public void convertAndSend​(String destinationName,
                                   Object message,
                                   MessagePostProcessor postProcessor)
                            throws JmsException
        Description copied from interface: JmsOperations
        Send the given object to the specified destination, converting the object to a JMS message with a configured MessageConverter. The MessagePostProcessor callback allows for modification of the message after conversion.
        Specified by:
        convertAndSend in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
        message - the object to convert to a message.
        postProcessor - the callback to modify the message
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receive

        @Nullable
        public Message receive()
                        throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the default destination, but only wait up to a specified time for delivery.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        This will only work with a default destination specified!

        Specified by:
        receive in interface JmsOperations
        Returns:
        the message received by the consumer, or null if the timeout expires
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receive

        @Nullable
        public Message receive​(Destination destination)
                        throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        Specified by:
        receive in interface JmsOperations
        Parameters:
        destination - the destination to receive a message from
        Returns:
        the message received by the consumer, or null if the timeout expires
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receive

        @Nullable
        public Message receive​(String destinationName)
                        throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        Specified by:
        receive in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
        Returns:
        the message received by the consumer, or null if the timeout expires
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receiveSelected

        @Nullable
        public Message receiveSelected​(String messageSelector)
                                throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the default destination, but only wait up to a specified time for delivery.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        This will only work with a default destination specified!

        Specified by:
        receiveSelected in interface JmsOperations
        Parameters:
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        Returns:
        the message received by the consumer, or null if the timeout expires
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receiveSelected

        @Nullable
        public Message receiveSelected​(Destination destination,
                                       @Nullable
                                       String messageSelector)
                                throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        Specified by:
        receiveSelected in interface JmsOperations
        Parameters:
        destination - the destination to receive a message from
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        Returns:
        the message received by the consumer, or null if the timeout expires
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receiveSelected

        @Nullable
        public Message receiveSelected​(String destinationName,
                                       @Nullable
                                       String messageSelector)
                                throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        Specified by:
        receiveSelected in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        Returns:
        the message received by the consumer, or null if the timeout expires
        Throws:
        JmsException - checked JMSException converted to unchecked
      • doReceive

        @Nullable
        protected Message doReceive​(Session session,
                                    Destination destination,
                                    @Nullable
                                    String messageSelector)
                             throws JMSException
        Receive a JMS message.
        Parameters:
        session - the JMS Session to operate on
        destination - the JMS Destination to receive from
        messageSelector - the message selector for this consumer (can be null)
        Returns:
        the JMS Message received, or null if none
        Throws:
        JMSException - if thrown by JMS API methods
      • receiveAndConvert

        @Nullable
        public Object receiveAndConvert()
                                 throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the default destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        This will only work with a default destination specified!

        Specified by:
        receiveAndConvert in interface JmsOperations
        Returns:
        the message produced for the consumer or null if the timeout expires.
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receiveAndConvert

        @Nullable
        public Object receiveAndConvert​(Destination destination)
                                 throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        Specified by:
        receiveAndConvert in interface JmsOperations
        Parameters:
        destination - the destination to receive a message from
        Returns:
        the message produced for the consumer or null if the timeout expires.
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receiveAndConvert

        @Nullable
        public Object receiveAndConvert​(String destinationName)
                                 throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        Specified by:
        receiveAndConvert in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
        Returns:
        the message produced for the consumer or null if the timeout expires.
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receiveSelectedAndConvert

        @Nullable
        public Object receiveSelectedAndConvert​(String messageSelector)
                                         throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the default destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        This will only work with a default destination specified!

        Specified by:
        receiveSelectedAndConvert in interface JmsOperations
        Parameters:
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        Returns:
        the message produced for the consumer or null if the timeout expires.
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receiveSelectedAndConvert

        @Nullable
        public Object receiveSelectedAndConvert​(Destination destination,
                                                String messageSelector)
                                         throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        Specified by:
        receiveSelectedAndConvert in interface JmsOperations
        Parameters:
        destination - the destination to receive a message from
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        Returns:
        the message produced for the consumer or null if the timeout expires.
        Throws:
        JmsException - checked JMSException converted to unchecked
      • receiveSelectedAndConvert

        @Nullable
        public Object receiveSelectedAndConvert​(String destinationName,
                                                String messageSelector)
                                         throws JmsException
        Description copied from interface: JmsOperations
        Receive a message synchronously from the specified destination, but only wait up to a specified time for delivery. Convert the message into an object with a configured MessageConverter.

        This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.

        Specified by:
        receiveSelectedAndConvert in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        Returns:
        the message produced for the consumer or null if the timeout expires.
        Throws:
        JmsException - checked JMSException converted to unchecked
      • doConvertFromMessage

        @Nullable
        protected Object doConvertFromMessage​(@Nullable
                                              Message message)
        Extract the content from the given JMS message.
        Parameters:
        message - the JMS Message to convert (can be null)
        Returns:
        the content of the message, or null if none
      • sendAndReceive

        @Nullable
        public Message sendAndReceive​(MessageCreator messageCreator)
                               throws JmsException
        Description copied from interface: JmsOperations
        Send a request message and receive the reply from a default destination. The MessageCreator callback creates the message given a Session. A temporary queue is created as part of this operation and is set in the JMSReplyTO header of the message.

        This will only work with a default destination specified!

        Specified by:
        sendAndReceive in interface JmsOperations
        Parameters:
        messageCreator - callback to create a request message
        Returns:
        the reply, possibly null if the message could not be received, for example due to a timeout
        Throws:
        JmsException - checked JMSException converted to unchecked
      • sendAndReceive

        @Nullable
        public Message sendAndReceive​(Destination destination,
                                      MessageCreator messageCreator)
                               throws JmsException
        Description copied from interface: JmsOperations
        Send a message and receive the reply from the specified destination. The MessageCreator callback creates the message given a Session. A temporary queue is created as part of this operation and is set in the JMSReplyTO header of the message.
        Specified by:
        sendAndReceive in interface JmsOperations
        Parameters:
        destination - the destination to send this message to
        messageCreator - callback to create a message
        Returns:
        the reply, possibly null if the message could not be received, for example due to a timeout
        Throws:
        JmsException - checked JMSException converted to unchecked
      • sendAndReceive

        @Nullable
        public Message sendAndReceive​(String destinationName,
                                      MessageCreator messageCreator)
                               throws JmsException
        Description copied from interface: JmsOperations
        Send a message and receive the reply from the specified destination. The MessageCreator callback creates the message given a Session. A temporary queue is created as part of this operation and is set in the JMSReplyTO header of the message.
        Specified by:
        sendAndReceive in interface JmsOperations
        Parameters:
        destinationName - the name of the destination to send this message to (to be resolved to an actual destination by a DestinationResolver)
        messageCreator - callback to create a message
        Returns:
        the reply, possibly null if the message could not be received, for example due to a timeout
        Throws:
        JmsException - checked JMSException converted to unchecked
      • browse

        @Nullable
        public <T> T browse​(BrowserCallback<T> action)
                     throws JmsException
        Description copied from interface: JmsOperations
        Browse messages in the default JMS queue. The callback gives access to the JMS Session and QueueBrowser in order to browse the queue and react to the contents.
        Specified by:
        browse in interface JmsOperations
        Parameters:
        action - callback object that exposes the session/browser pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • browse

        @Nullable
        public <T> T browse​(Queue queue,
                            BrowserCallback<T> action)
                     throws JmsException
        Description copied from interface: JmsOperations
        Browse messages in a JMS queue. The callback gives access to the JMS Session and QueueBrowser in order to browse the queue and react to the contents.
        Specified by:
        browse in interface JmsOperations
        Parameters:
        queue - the queue to browse
        action - callback object that exposes the session/browser pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • browse

        @Nullable
        public <T> T browse​(String queueName,
                            BrowserCallback<T> action)
                     throws JmsException
        Description copied from interface: JmsOperations
        Browse messages in a JMS queue. The callback gives access to the JMS Session and QueueBrowser in order to browse the queue and react to the contents.
        Specified by:
        browse in interface JmsOperations
        Parameters:
        queueName - the name of the queue to browse (to be resolved to an actual destination by a DestinationResolver)
        action - callback object that exposes the session/browser pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • browseSelected

        @Nullable
        public <T> T browseSelected​(String messageSelector,
                                    BrowserCallback<T> action)
                             throws JmsException
        Description copied from interface: JmsOperations
        Browse selected messages in a JMS queue. The callback gives access to the JMS Session and QueueBrowser in order to browse the queue and react to the contents.
        Specified by:
        browseSelected in interface JmsOperations
        Parameters:
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        action - callback object that exposes the session/browser pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • browseSelected

        @Nullable
        public <T> T browseSelected​(Queue queue,
                                    @Nullable
                                    String messageSelector,
                                    BrowserCallback<T> action)
                             throws JmsException
        Description copied from interface: JmsOperations
        Browse selected messages in a JMS queue. The callback gives access to the JMS Session and QueueBrowser in order to browse the queue and react to the contents.
        Specified by:
        browseSelected in interface JmsOperations
        Parameters:
        queue - the queue to browse
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        action - callback object that exposes the session/browser pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • browseSelected

        @Nullable
        public <T> T browseSelected​(String queueName,
                                    @Nullable
                                    String messageSelector,
                                    BrowserCallback<T> action)
                             throws JmsException
        Description copied from interface: JmsOperations
        Browse selected messages in a JMS queue. The callback gives access to the JMS Session and QueueBrowser in order to browse the queue and react to the contents.
        Specified by:
        browseSelected in interface JmsOperations
        Parameters:
        queueName - the name of the queue to browse (to be resolved to an actual destination by a DestinationResolver)
        messageSelector - the JMS message selector expression (or null if none). See the JMS specification for a detailed definition of selector expressions.
        action - callback object that exposes the session/browser pair
        Returns:
        the result object from working with the session
        Throws:
        JmsException - checked JMSException converted to unchecked
      • getConnection

        @Nullable
        protected Connection getConnection​(JmsResourceHolder holder)
        Fetch an appropriate Connection from the given JmsResourceHolder.

        This implementation accepts any JMS 1.1 Connection.

        Parameters:
        holder - the JmsResourceHolder
        Returns:
        an appropriate Connection fetched from the holder, or null if none found
      • getSession

        @Nullable
        protected Session getSession​(JmsResourceHolder holder)
        Fetch an appropriate Session from the given JmsResourceHolder.

        This implementation accepts any JMS 1.1 Session.

        Parameters:
        holder - the JmsResourceHolder
        Returns:
        an appropriate Session fetched from the holder, or null if none found
      • doCreateProducer

        protected MessageProducer doCreateProducer​(Session session,
                                                   @Nullable
                                                   Destination destination)
                                            throws JMSException
        Create a raw JMS MessageProducer for the given Session and Destination.

        This implementation uses JMS 1.1 API.

        Parameters:
        session - the JMS Session to create a MessageProducer for
        destination - the JMS Destination to create a MessageProducer for
        Returns:
        the new JMS MessageProducer
        Throws:
        JMSException - if thrown by JMS API methods
      • createConsumer

        protected MessageConsumer createConsumer​(Session session,
                                                 Destination destination,
                                                 @Nullable
                                                 String messageSelector)
                                          throws JMSException
        Create a JMS MessageConsumer for the given Session and Destination.

        This implementation uses JMS 1.1 API.

        Parameters:
        session - the JMS Session to create a MessageConsumer for
        destination - the JMS Destination to create a MessageConsumer for
        messageSelector - the message selector for this consumer (can be null)
        Returns:
        the new JMS MessageConsumer
        Throws:
        JMSException - if thrown by JMS API methods