public static ArrayList<ServerLocation> sendAndFind(ServerLocator locator,
      ClientProxyMembershipID proxyId,
      DistributionManager dm) {
    Set members = ((GridAdvisor) locator.getDistributionAdvisor()).adviseBridgeServers();
    if (members.contains(dm.getId())) {
      // Don't send message to local server, see #50534.
      Set remoteMembers = new HashSet(members);
      remoteMembers.remove(dm.getId());
      members = remoteMembers;
    }
    FindDurableQueueProcessor processor = new FindDurableQueueProcessor(dm, members);

    FindDurableQueueMessage.send(proxyId, dm, members, processor);
    try {
      processor.waitForRepliesUninterruptibly();
    } catch (ReplyException e) {
      e.handleCause();
    }
    ArrayList<ServerLocation> locations = processor.durableLocations;
    // This will add any local queues to the list
    findLocalDurableQueues(proxyId, locations);
    return locations;
  }
A processor for helping a locator find the durable queues for a given durable client id. Asks
each cache server if they have the durable id and builds a list of matching servers.

@since GemFire 5.7
geode-core/src/main/java/org/apache/geode/internal/cache/FindDurableQueueProcessor.java