@Override
        public void run() {
          try {
            // receivedMessagesAverage
            logger.info("receivedMessagesAverage: " + receivedMessagesAverage.getAverage());

            // print which are unprocessed
            long currentTime = Clock.getMainClock().getTimeInMillis(false);

            String debug = "";
            synchronized (receivedMessages) {
              for (AbstractMessage message : receivedMessages)
                debug +=
                    message.toString() + "@" + (message.getReceiveTimeMillis() - currentTime) + ":";
            }
            if (logger.isDebugEnabled()) logger.debug("unprocessed messages: " + debug);
          } catch (Exception e) {
            // just so it doesn't die silently if an unhandled exception happened
            e.printStackTrace();
          }
        }