languages | products | page_type | description | |||
---|---|---|---|---|---|---|
|
|
sample |
This sample shows you how to use the Azure Cosmos DB SDK to react to changes happening in the Azure Cosmos DB service. |
This sample shows you how yo use the Azure Cosmos DB SDK to consume Azure Cosmos DB's Change Feed and react to changes happening in a container.
- An active Azure Cosmos account or the Azure Cosmos DB Emulator - If you don't have an account, refer to the Create a database account article.
- NET Core SDK or Visual Studio 2017 (or higher)
This sample will create two containers, using the names defined in appSettings.json (SourceContainerName
, LeasesContainerName
). One of them will be used to store state (LeasesContainerName
), and the other will be the container that we'll be listening for changes on (SourceContainerName
).
The code creates an instance of a Change Feed Processor and defines a delegate that will process the changes:
ChangeFeedProcessor changeFeedProcessor = cosmosClient.GetContainer(databaseName, sourceContainerName)
.GetChangeFeedProcessorBuilder<ToDoItem>("<name-for-the-workflow>", HandleChangesAsync)
.WithInstanceName("<name-for-the-host-instance>")
.WithLeaseContainer(leaseContainer)
.Build();
Where HandleChangesAsync
is a delegate with a signature of:
async Task HandleChangesAsync(IReadOnlyCollection<ToDoItem> changes, CancellationToken cancellationToken)
The Change Feed Processor works as a push model. Whenever there are new changes in SourceContainerName
, the HandleChangesAsync delegate will be called and its code will be able to process the list of changes. As more changes keep happening, new invocations will occur.
- Clone this repository or download the zip file.
- Retrieve the Connection String value from the Keys blade of your Azure Cosmos account in the Azure portal. For more information on obtaining the Connection String for your Azure Cosmos account refer to View, copy, and regenerate access keys and passwords.
- If you are working with the Azure Cosmos DB Emulator, refer to Develop locally with the Azure Cosmos Emulator.
- In the appSettings.json file, located in the project root, find ConnectionString and replace the placeholder value with the value obtained for your account.
- Run
dotnet run
or press F5 from within Visual Studio. - Type an amount of random records to be generated in
SourceContainerName
(for example, 10), and press ENTER. The sample will write those records in the container. - The
HandleChangesAsync
delegate will get called and handle those changes as they are inserted, independently. - Repeat step 5 with different numbers or type
exit
to stop.
The code included in this sample is intended to get you going with consuming the Change Feed and react to changes. It is not intended to be a set of best practices on how to build scalable enterprise grade applications. This is beyond the scope of this quick start sample.