code: public void listen(Destination dest, String messageSelector, MessageListener callback)
              throws MessagingException {
          try {
              Session s =
                      connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
              MessageConsumer c = s.createConsumer(dest, messageSelector);
              c.setMessageListener(callback);
          } catch (JMSException e) {
              throw new MessagingException(e.getMessage(), e);
          }
  
          if (logger.isDebugEnabled()) {
              logger.debug("listen() - Asynchronous listen on destination " + dest);
          }
      }
docs: This is an asynchronous listen. The caller provides a JMS callback
  interface reference, and any messages received for the given destination
  are provided through the onMessage() callback method.
  Messages will be filtered based on the provided message selector.