重要
Azure DocumentDB 扩展目前处于预览阶段。 目前仅支持使用 旧进程内模型的 .NET 应用。
Azure DocumentDB 触发器会监控 DocumentDB 集合中的插入和更新的变更流。 本文将解释如何在 Azure Functions 中配置和使用触发器,包括代码示例和属性参数,帮助你实时响应数据变化。
该动态只发布新的和更新的条目。 当前不支持监视使用更改流删除操作。
先决条件
Azure 订阅服务
- 如果没有 Azure 订阅,请创建 试用版
现有的 Azure DocumentDB 群集
Azure Functions .NET 8.0 project using legacy in-process worker model
Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.MongoNuGet 包
例子
本示例展示了在 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.Database 或 MonitorLevel.Cluster,否则需要一个有效的值。 否则,可以给出空字符串。 |
ConnectionStringSetting |
指定如何连接到 Azure DocumentDB 集群的应用设置或设置集合名称。 |
TriggerLevel |
表示变化被监控的层级。 有效值为 MonitorLevel : Collection、 Database和 Cluster。 |
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}");
}