code: public static ScheduledFuture schedule(Runnable runnable, long delayInMilli, String msgId) {
          if (StringUtil.isEmpty(msgId)) {
              throw new IllegalArgumentException("You must specify a $msgId for the the one-shot action.");
          }
          Runnable proxy = wrapRunnable(runnable, msgId);
          return scheduledExecutorService.schedule(proxy, delayInMilli, TimeUnit.MILLISECONDS);
      }
docs: Creates and executes a one-shot action that becomes enabled after the given delay.
  
  @param runnable     a java runnable object you want to submit
  @param delayInMilli the delay in milliseconds
  @param msgId        the message id. Not null.
  @return the future