code: String recoverQueue(String queueName, QueueDeclaration queueDeclaration) throws Exception {
      try {
        String newQueueName =
            ((Queue.DeclareOk) queueDeclaration.invoke(getRecoveryChannel())).getQueue();
        if (queueName.equals(newQueueName))
          log.info("Recovered queue {} via {}", queueName, this);
        else {
          log.info("Recovered queue {} as {} via {}", queueName, newQueueName, this);
          queueDeclaration.name = newQueueName;
        }
  
        return newQueueName;
      } catch (Exception e) {
        log.error("Failed to recover queue {} via {}", queueName, this, e);
        if (throwOnRecoveryFailure() || Exceptions.isCausedByConnectionClosure(e))
          throw e;
        return queueName;
      }
    }
docs: Recovers a queue using the {@code channelSupplier}, returning the recovered queue's name.