docs: @Override
      public IQueueMessage<ID, DATA> take() throws QueueException.EphemeralIsFull {
          try {
              try (Connection conn = jdbcHelper.getConnection()) {
                  if (!isEphemeralDisabled()) {
                      int ephemeralMaxSize = getEphemeralMaxSize();
                      if (ephemeralMaxSize > 0 && ephemeralSize(conn) >= ephemeralMaxSize) {
                          throw new QueueException.EphemeralIsFull(ephemeralMaxSize);
                      }
                  }
                  return _takeWithRetries(conn, 0, this.maxRetries);
              }
          } catch (Exception e) {
              final String logMsg = "(take) Exception [" + e.getClass().getName() + "]: "
                      + e.getMessage();
              LOGGER.error(logMsg, e);
              throw e instanceof QueueException ? (QueueException) e : new QueueException(e);
          }
      }