Class MultiSessionConsumer

  • All Implemented Interfaces:
    jakarta.jms.ConnectionConsumer, ReplyListener

    public final class MultiSessionConsumer
    extends MessageConsumerListener
    implements jakarta.jms.ConnectionConsumer
    The MultiSessionConsumer is threaded (see MessageDispatcher) because the session pool can hang if there is no more available ServerSession.
    • Field Detail

      • logger

        private static final Logger logger
      • DEBUG

        private static final boolean DEBUG
      • serverSessionPool

        private jakarta.jms.ServerSessionPool serverSessionPool
      • maxMsgs

        private int maxMsgs
      • repliesIn

        private Queue repliesIn
      • nbActivatedListeners

        private int nbActivatedListeners
        Number of simultaneously activated listeners.
    • Constructor Detail

      • MultiSessionConsumer

        MultiSessionConsumer​(boolean queueMode,
                             boolean durable,
                             String selector,
                             String destName,
                             String targetName,
                             jakarta.jms.ServerSessionPool sessionPool,
                             int queueMessageReadMax,
                             int topicActivationThreshold,
                             int topicPassivationThreshold,
                             int topicAckBufferMax,
                             RequestMultiplexer reqMultiplexer,
                             Connection connection,
                             int maxMessages)
        Parameters:
        consumer -
        listener -
        ackMode -
        queueMessageReadMax -
        topicActivationThreshold -
        topicPassivationThreshold -
        topicAckBufferMax -
        reqMultiplexer -
    • Method Detail

      • pushMessages

        public void pushMessages​(ConsumerMessages cm)
                          throws jakarta.jms.JMSException
        Description copied from class: MessageConsumerListener
        Pushes the received messages. Currently two behaviors: 1- SingleSessionConsumer pushes the message in a single session (standard JMS) 2- MultiSessionConsumer pushes the message in several session (from a session pool)
        Specified by:
        pushMessages in class MessageConsumerListener
        Throws:
        jakarta.jms.JMSException
      • getServerSessionPool

        public jakarta.jms.ServerSessionPool getServerSessionPool()
                                                           throws jakarta.jms.JMSException
        Specified by:
        getServerSessionPool in interface jakarta.jms.ConnectionConsumer
        Throws:
        jakarta.jms.JMSException
      • close

        public void close()
                   throws jakarta.jms.JMSException
        Description copied from class: MessageConsumerListener
        Called by Session.
        Specified by:
        close in interface jakarta.jms.ConnectionConsumer
        Overrides:
        close in class MessageConsumerListener
        Throws:
        jakarta.jms.JMSException
      • onMessage

        public void onMessage​(Message msg,
                              jakarta.jms.MessageListener listener,
                              int ackMode)
                       throws jakarta.jms.JMSException
        Specified by:
        onMessage in class MessageConsumerListener
        Throws:
        jakarta.jms.JMSException