MessageProxy m = (MessageProxy)consumerDelegate.getMessageNow(true);
if (trace) { log.trace("Activation runnable running, getting message now"); }  try { MessageProxy m = (MessageProxy)consumerDelegate.getMessageNow(true);
      public void run()      {               try         {            //We always try and return the message immediately, if available.            //This prevents an extra network call to deliver the message.            //If the message is not available, the consumer will stay active and            //the message will delivered asynchronously (pushed) (that is what the boolean param is for)                        MessageProxy m = (MessageProxy)consumerDelegate.getMessageNow(true);                           if (m != null)            {               handleMessage(m);            }                            synchronized (activationLock)            {               activationCount--;               if (activationCount == 0)               {                  activationLock.notify();               }            }                     }         catch(Throwable t)         {            log.error("Consumer endpoint activation failed", t);            if (t.getCause() != null)            {               log.error("Cause:" + t.getCause());            }            try            {               close();            }            catch (JMSException e)            {               log.error("Failed to close consumer", e);            }         }              } 