0 Replies Latest reply on Sep 12, 2005 3:12 PM by Emily

    problem with stop method in org.jboss.mq.SpyConnection

    Emily Newbie

      It seems like the stop() method on the SpyConnection class in JBoss4.0.1 may not be working properly, unless I am doing something wrong. I have message consumer classes that implement MessageListener and register themselves with a QueueReceiver, like so:

      Properties props = getJndiContextProperties();
       context = new InitialContext(props);
       this.queueConn = getQueueConnection( context );
       log.info("queueConn created: " + queueConn.toString());
       this.queueSession = this.queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
      
       this.queue = (Queue) context.lookup(getJndiQueueName());
       this.queueReceiver = queueSession.createReceiver(queue);
       this.queueReceiver.setMessageListener(this);
       this.queueConn.start();
      


      I also have a method on the message consumer class that is accessible from the jmx console whose body looks like this:

      /**
       * Stop the QueueConnection
       * @jmx.managed-operation
       * description="stop the JMS queue connection for this message consumer"
       */
       public void stopJMSConnection()
       {
       try{
       if(queueConn != null)
       {
       log.info("stopping JMS Connection on " + this.getQueueName());
       log.info("queueConn instance of: " + queueConn.getClass().getName());
       queueConn.stop();
       if(queueConn instanceof org.jboss.mq.SpyConnection)
       log.info("modestop: " + ((org.jboss.mq.SpyConnection) queueConn).modeStop);
       log.info("stop returned, connection: " + queueConn.toString());
       }
       }catch(Exception e)
       {
       log.error("Error stopping JMS Connection: " + e);
       }
       }
      


      If I execute the stopJMSConnection method from the jmx-console and then send a message to the queue, the MessageListener still processes it, even though the QueueConnection is in a stopped state:

      log snippet:
      ...
      12:01:30,249 INFO [jmx.MessageConsumer 219] queueConn created: Connection@23883177[token=ConnectionToken:null/82177ec4472b323eccc23111dbe2752f rcvstate=STOPPED]
      ...
      12:01:30,374 INFO [jmx.MessageConsumer 280] started JMS Connection on AbstractMessageConsumer for queue archiveQ2 queueConn: Connection@23883177[token=ConnectionToken:ID:7/82177ec4472b323eccc23111dbe2752f rcvstate=STARTED]
      ...
      12:01:31,327 INFO [server.Server 432] JBoss (MX MicroKernel) [4.0.1 (build: CVSTag=JBoss_4_0_1 date=200412230944)] Started in 31s:515ms
      ...
      12:01:48,109 INFO [jmx.MessageConsumer 308] stopping JMS Connection on archiveQ2
      12:01:48,109 INFO [jmx.MessageConsumer 309] queueConn instance of: org.jboss.mq.SpyConnection
      12:01:48,109 INFO [jmx.MessageConsumer 312] modestop: true
      12:01:48,109 INFO [jmx.MessageConsumer 313] stop returned, connection: Connection@23883177[token=ConnectionToken:ID:7/82177ec4472b323eccc23111dbe2752f rcvstate=STOPPED]
      ...
      12:01:53,937 INFO [jmx.QueueManager 583] route participantId 3fdefefb185baa4a9bf09fbbfc38b2bb to queueNumber 2
      12:01:53,937 INFO [jmx.MessageConsumer 76] received message, connection Connection@23883177[token=ConnectionToken:ID:7/82177ec4472b323eccc23111dbe2752f rcvstate=STOPPED]
      ...

      Any ideas?

      Thx