public CompletableFuture<String> queryChangeFeedAsync(String requestContinuationToken, int maxFeedSize,
      List<CloudBlobMetadata> changeFeed, String partitionPath, Timer timer) {

    azureMetrics.changeFeedQueryCount.inc();

    CosmosChangeFeedRequestOptions cosmosChangeFeedRequestOptions;
    if (Utils.isNullOrEmpty(requestContinuationToken)) {
      cosmosChangeFeedRequestOptions = CosmosChangeFeedRequestOptions.createForProcessingFromBeginning(
          FeedRange.forLogicalPartition(new PartitionKey(partitionPath)));
    } else {
      cosmosChangeFeedRequestOptions =
          CosmosChangeFeedRequestOptions.createForProcessingFromContinuation(requestContinuationToken);
    }
    // Set the maximum number of items to be returned in this change feed request.
    cosmosChangeFeedRequestOptions.setMaxItemCount(maxFeedSize);
    return queryChangeFeedAsync(cosmosChangeFeedRequestOptions, changeFeed, timer);
  }
Query Cosmos change feed to get the next set of {@code CloudBlobMetadata} objects in specified {@code partitionPath}
after {@code requestContinationToken} asynchronously, capped by specified {@code maxFeedSize} representing the max
number of items to be queried from the change feed.
@param requestContinuationToken Continuation token after which change feed is requested.
@param maxFeedSize max item count to be requested in the feed query.
@param changeFeed {@link CloudBlobMetadata} {@code List} to be populated with the next set of entries returned by change feed query.
@param partitionPath partition for which the change feed is requested.
@param timer the {@link Timer} to use to record query time (excluding waiting).
@return a {@link CompletableFuture} that will eventually contain next continuation token or {@link CosmosException}
        in case of any error.
ambry-cloud/src/main/java/com/github/ambry/cloud/azure/CosmosDataAccessor.java