|
4 | 4 | package com.azure.cosmos.examples.queries.sync; |
5 | 5 |
|
6 | 6 | import com.azure.cosmos.ConsistencyLevel; |
| 7 | +import com.azure.cosmos.CosmosAsyncClient; |
7 | 8 | import com.azure.cosmos.CosmosClient; |
8 | 9 | import com.azure.cosmos.CosmosClientBuilder; |
9 | 10 | import com.azure.cosmos.CosmosContainer; |
@@ -529,41 +530,50 @@ private String buildCompoundSessionToken(Map<String, String> partitionSessionTok |
529 | 530 | } |
530 | 531 |
|
531 | 532 | private void queryWithCompoundSessionTokenAndIteratePages(String databaseName, String containerName, String compoundSessionToken) { |
532 | | - // This method is not used in this sample but illustrates how to use a compound session token |
533 | | - // to execute a query and iterate over pages of results. |
534 | | - CosmosQueryRequestOptions options = new CosmosQueryRequestOptions(); |
535 | | - options.setSessionToken(compoundSessionToken); |
| 533 | + try (CosmosClient readerClient = new CosmosClientBuilder() |
| 534 | + .endpoint(AccountSettings.HOST) |
| 535 | + .key(AccountSettings.MASTER_KEY) |
| 536 | + // Use SESSION consistency to honor session tokens |
| 537 | + .consistencyLevel(ConsistencyLevel.SESSION) |
| 538 | + .buildClient()) { |
536 | 539 |
|
537 | | - String query = "SELECT * FROM c"; |
538 | | - int pageSize = 100; |
539 | | - String continuationToken = null; |
540 | | - int currentPageNumber = 1; |
541 | | - double requestCharge = 0.0; |
| 540 | + CosmosQueryRequestOptions options = new CosmosQueryRequestOptions(); |
| 541 | + options.setSessionToken(compoundSessionToken); |
542 | 542 |
|
543 | | - do { |
544 | | - logger.info("Receiving a set of query response pages (sync). ContinuationToken={}", continuationToken); |
| 543 | + CosmosContainer readerContainer = readerClient.getDatabase(databaseName).getContainer(containerName); |
545 | 544 |
|
546 | | - Iterable<FeedResponse<Family>> feedResponseIterator = container.queryItems(query, options, Family.class).iterableByPage(continuationToken, pageSize); |
| 545 | + String query = "SELECT * FROM c"; |
| 546 | + int pageSize = 100; |
| 547 | + String continuationToken = null; |
| 548 | + int currentPageNumber = 1; |
| 549 | + double requestCharge = 0.0; |
547 | 550 |
|
548 | | - for (FeedResponse<Family> page : feedResponseIterator) { |
549 | | - logger.info(String.format("Current page number: %d", currentPageNumber)); |
| 551 | + do { |
| 552 | + logger.info("Receiving a set of query response pages (sync). ContinuationToken={}", continuationToken); |
550 | 553 |
|
551 | | - // Log the session token associated with this feed response |
552 | | - logger.info("FeedResponse.sessionToken={}", page.getSessionToken()); |
| 554 | + Iterable<FeedResponse<Family>> feedResponseIterator = readerContainer.queryItems(query, options, Family.class).iterableByPage(continuationToken, pageSize); |
553 | 555 |
|
554 | | - for (Family family : page.getResults()) { |
555 | | - logger.info("Query result (sync): id={}, partitionKey={}", family.getId(), family.getLastName()); |
556 | | - } |
| 556 | + for (FeedResponse<Family> page : feedResponseIterator) { |
| 557 | + logger.info(String.format("Current page number: %d", currentPageNumber)); |
557 | 558 |
|
558 | | - requestCharge += page.getRequestCharge(); |
559 | | - logger.info(String.format("Total request charge so far: %f\n", requestCharge)); |
| 559 | + logger.info("FeedResponse.sessionToken={}", page.getSessionToken()); |
560 | 560 |
|
561 | | - continuationToken = page.getContinuationToken(); |
562 | | - currentPageNumber++; |
563 | | - } |
| 561 | + for (Family family : page.getResults()) { |
| 562 | + logger.info("Query result (sync): id={}, partitionKey={}", family.getId(), family.getLastName()); |
| 563 | + } |
564 | 564 |
|
565 | | - } while (continuationToken != null); |
| 565 | + requestCharge += page.getRequestCharge(); |
| 566 | + logger.info(String.format("Total request charge so far: %f\n", requestCharge)); |
| 567 | + |
| 568 | + continuationToken = page.getContinuationToken(); |
| 569 | + currentPageNumber++; |
| 570 | + } |
566 | 571 |
|
567 | | - logger.info(String.format("Total request charge (sync): %f\n", requestCharge)); |
| 572 | + } while (continuationToken != null); |
| 573 | + |
| 574 | + logger.info(String.format("Total request charge (sync): %f\n", requestCharge)); |
| 575 | + } catch (Exception e) { |
| 576 | + logger.error("Exception while querying with compound session token: {}", e.getMessage(), e); |
| 577 | + } |
568 | 578 | } |
569 | 579 | } |
0 commit comments