适用于 Azure Functions 的 Azure DocumentDB 触发器

重要

Azure DocumentDB 扩展目前处于预览阶段。 目前仅支持使用 旧进程内模型的 .NET 应用。

Azure DocumentDB 触发器会监控 DocumentDB 集合中的插入和更新的变更流。 本文将解释如何在 Azure Functions 中配置和使用触发器,包括代码示例和属性参数,帮助你实时响应数据变化。

该动态只发布新的和更新的条目。 当前不支持监视使用更改流删除操作。

先决条件

例子

本示例展示了在 Azure DocumentDB 中通过插入或替换作触发的函数。 该函数记录修改后文档的正文。

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo;
using MongoDB.Bson;
using MongoDB.Driver;

public static class DocumentDBTrigger
{
    [FunctionName(nameof(DocumentDBTrigger))]
    public static void Run(
        [CosmosDBMongoTrigger(databaseName: "<database-name>",
                        collectionName: "<collection-name>",
                        ConnectionStringSetting = "AZURE_DOCUMENTDB_CONNECTION_STRING")]
        ChangeStreamDocument<BsonDocument> change,
        ILogger logger)
    {
        logger.LogInformation("C# Azure DocumentDB trigger function processed a change.");

        logger.LogInformation($"{change.FullDocument}");
    }
}

特性

下表描述了属性的 CosmosDBMongoTrigger 绑定配置属性。

参数 Description
FunctionId (可选)触发器函数的 ID。
DatabaseName 触发变更的数据库名称。 除非 TriggerLevel 设为 MonitorLevel.Cluster,否则需要一个有效的值。 否则,可以给出空字符串。
CollectionName 数据库中由变更触发器监控的集合名称。 除非 TriggerLevel 设置为 MonitorLevel.DatabaseMonitorLevel.Cluster,否则需要一个有效的值。 否则,可以给出空字符串。
ConnectionStringSetting 指定如何连接到 Azure DocumentDB 集群的应用设置或设置集合名称。
TriggerLevel 表示变化被监控的层级。 有效值为 MonitorLevelCollectionDatabaseCluster

Usage

使用 TriggerLevel 参数设置所监视的更改范围。

[FunctionName(nameof(DocumentDBTrigger))]
public static void Run(
    [CosmosDBMongoTrigger(databaseName: "",
                    collectionName: "",
                    ConnectionStringSetting = "<name-of-app-setting>",
                    TriggerLevel = MonitorLevel.Cluster)]
    ChangeStreamDocument<BsonDocument> change,
    ILogger logger)
{
    logger.LogInformation("C# Azure DocumentDB trigger function processed a change.");

    logger.LogInformation($"{change.FullDocument}");
}