code: private void recoverRelatedExchanges(Set<String> recoveredExchanges, List<Binding> queueBindings)
      throws Exception {
      if (config.isExchangeRecoveryEnabled() && queueBindings != null)
        synchronized (queueBindings) {
          for (Binding queueBinding : queueBindings) {
            String exchangeName = queueBinding.source;
            if (recoveredExchanges.add(exchangeName)) {
              ResourceDeclaration exchangeDeclaration = connectionHandler.exchangeDeclarations.get(exchangeName);
              if (exchangeDeclaration != null)
                recoverExchange(exchangeName, exchangeDeclaration);
              recoverExchangeBindings(connectionHandler.exchangeBindings.get(exchangeName));
            }
          }
        }
    }
docs: Recovers exchanges and bindings related to the {@code queueBindings} that are not present in
  {@code recoveredExchanges}, adding recovered exchanges to the {@code recoveredExchanges}.