• 1 min read

Announcing new Async Java SDK for Azure #CosmosDB

We’re excited to announce a new asynchronous Java SDK for Cosmos DB’s SQL API.

We’re excited to announce a new asynchronous Java SDK for Cosmos DB’s SQL API open sourced on GitHub. This SDK leverages the popular RxJava library to add a new async API surface area for composing event-based programs with observable sequences. It also features an improved user experience and is also lighter weight than our previous synchronous Java SDK (yielding a 2x performance improvement on the client-side)!

image

You can add the library from Maven using:


    com.microsoft.azure
    azure-cosmosdb
    1.0.1

Connect to Cosmos DB

The new SDK uses convenient builder pattern to specify connectivity options:

asyncClient = new AsyncDocumentClient.Builder()
                         .withServiceEndpoint(HOST)
                         .withMasterKey(MASTER_KEY)
                         .withConnectionPolicy(ConnectionPolicy.GetDefault())
                         .withConsistencyLevel(ConsistencyLevel.Eventual)
                         .build();

Insert an item

To execute and coordinate Cosmos DB data operations asynchronously, and get the results you use observables:

Document doc = 
      new Document(String.format("{ 'id': 'doc%d', 'counter': '%d'}", 1, 1));

Observable<ResourceResponse> createDocumentObservable =
      asyncClient.createDocument(collectionLink, doc, null, false);

createDocumentObservable
      .single()           // we know there will be one response
      .subscribe(documentResourceResponse -> {
            System.out.println(documentResourceResponse.getRequestCharge());
      });

Note that the createDocument request will be issued only once .subscribe is called on the corresponding observable result.

Query

In Cosmos DB queries can return multiple pages of data. To efficiently read all the pages, simply subscribe and read all pages:

Observable<FeedResponse> documentQueryObservable = asyncClient
                .queryDocuments(getCollectionLink(), "SELECT * FROM root", options);

// forEach(.) is an alias for subscribe(.)
documentQueryObservable.forEach(page -> {
     for (Document d : page.getResults()) {    
            System.out.println(d.toJson());
     }
});

We just barely scratched the surface. Learn more about Azure Cosmos DB async SDK for Java.

If you are using Azure Cosmos DB, please feel free to reach out to us at AskCosmosDB@microsoft.com any time. If you are not yet using Azure Cosmos DB, you can try Azure Cosmos DB for free today, no sign up or credit card is required. If you need any help or have questions or feedback, please reach out to us any time. For the latest Azure Cosmos DB news and features, please stay up-to-date by following us on Twitter #CosmosDB, @AzureCosmosDB. We look forward to see what you will build with Azure Cosmos DB!

– Your friends at Azure Cosmos DB