public void sendQueueRemovalMessageForDroppedEvent(PartitionedRegion prQ, int bucketId,
      Object key) {

    Set<InternalDistributedMember> recipients =
        removalThread.getAllRecipientsForEvent(sender.getCache(), prQ.getFullPath(), bucketId);

    if (!recipients.isEmpty()) {
      final Map<String, Map<Integer, List<Object>>> temp = new HashMap<>();
      Map<Integer, List<Object>> bucketIdToDispatchedKeys = new ConcurrentHashMap<>();
      temp.put(prQ.getFullPath(), bucketIdToDispatchedKeys);
      addRemovedEventToMap(bucketIdToDispatchedKeys, bucketId, key);
      ParallelQueueRemovalMessage pqrm = new ParallelQueueRemovalMessage(temp);
      pqrm.setRecipients(recipients);
      sender.getCache().getInternalDistributedSystem().getDistributionManager().putOutgoing(pqrm);
    }
  }
Take will choose a random BucketRegionQueue which is primary and will take the head element
from it.
geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java