public void run() {
      boolean running = true;

      while(running) {
        try {
          log.debug("Waiting for status update");
          Collection<String> deQueuedMessages = new ArrayList<String>();

          if(queue.drainTo(deQueuedMessages) > 0) {
            for(String message : deQueuedMessages) {
              log.info("Got message: {}", message);

              if(messages.size() == config.getMessageCount()) {
                messages.remove(0);
              }

              messages.add(message);
            }

            sendMessages(messages.toArray(new String[messages.size()]));
          }

          //Wait n seconds, so the LED can complete at least one cycle
          Thread.sleep(config.getWaitTime() * 1000);

        } catch(InterruptedException ex) {
          running = false;
        }
      }
    }