CosmosDBTrigger Interface


Place this on a parameter whose value would come from CosmosDB, and causing the method to run when CosmosDB data is changed. The parameter type can be one of the following:

  • Some native Java types such as String
  • Nullable values using Optional
  • Any POJO type

The following example shows a Java function that is invoked when there are inserts or updates in the specified database and collection.

 public void cosmosDbLog(
    @CosmosDBTrigger(name = "database",
                      databaseName = "ToDoList",
                      collectionName = "Items",
                      leaseCollectionName = "leases",
                      createLeaseCollectionIfNotExists = true,
                      connectionStringSetting = "AzureCosmosDBConnection") 
                      List<Map<String, String>> items,
     final ExecutionContext context
 ) {
     context.getLogger().info(items.size() + " item(s) is/are inserted.");
     if (!items.isEmpty()) {
         context.getLogger().info("The ID of the first item is: " + items.get(0).get("id"));
public interface CosmosDBTrigger implements Annotation



Customizes the amount of documents between lease checkpoints. Default is always after a Function call.


Customizes the amount of milliseconds between lease checkpoints. Default is always after a Function call.


Defines the collection name of the CosmosDB to which to bind.


Defines the app setting name that contains the CosmosDB connection string.


Defines whether to create a new lease collection if not exists.


Defines how Functions runtime should treat the parameter value. Possible values are:

  • "": get the value as a string, and try to deserialize to actual parameter type like POJO
  • string: always get the value as a string
  • binary: get the value as a binary data, and try to deserialize to actual parameter type byte[]

Defines the database name of the CosmosDB to which to bind.


Customizes the delay in milliseconds in between polling a partition for new changes on the feed, after all current changes are drained. Default is 5000 (5 seconds).


Customizes the interval in milliseconds to kick off a task to compute if partitions are distributed evenly among known host instances. Default is 13000 (13 seconds).


Defines the lease collection name of the CosmosDB to which to bind.


Defines a prefix to be used within a Leases collection for this Trigger. Useful when sharing the same Lease collection among multiple Triggers.


Defines Connection string for the service containing the lease collection.


Defines Name of the database containing the lease collection.


Customizes the interval in milliseconds for which the lease is taken on a lease representing a partition. If the lease is not renewed within this interval, it will cause it to expire and ownership of the partition will move to another Trigger instance. Default is 60000 (60 seconds).


Customizes the renew interval in milliseconds for all leases for partitions currently held by the Trigger. Default is 17000 (17 seconds).


defines the throughput of the created collection..


Customizes the maximum amount of items received in an invocation


The variable name used in function.json.


Defines preferred locations (regions) for geo-replicated database accounts in the Azure Cosmos DB service. Values should be comma-separated. example, PreferredLocations = "East US,South Central US,North Europe"


Gets or sets whether change feed in the Azure Cosmos DB service should start from beginning (true) or from current (false). By default it's start from current (false).

Applies to