code: public boolean put(T item, String itemId, int maxWait, TimeUnit unit) throws Exception
      {
          Preconditions.checkArgument(isValidId(itemId), "Invalid id: " + itemId);
  
          queue.checkState();
  
          return queue.internalPut(item, null, makeIdPath(itemId), maxWait, unit);
      }
docs: Same as {@link #put(Object, String)} but allows a maximum wait time if an upper bound was set
  via {@link QueueBuilder#maxItems}.
  
  @param item item
  @param itemId item Id
  @param maxWait maximum wait
  @param unit wait unit
  @return true if items was added, false if timed out
  @throws Exception