我正在编写一些代码,这些代码使用Cosmos作为存储来实现事件源。我的初始文件已成功写入收藏集。然后,我设置了一个Azure函数,该函数可触发对该集合的feed进行更改并将该项目复制到另一个集合。
我的问题是,如果我在本地调试功能应用程序时一切正常,这些更改就可以正常工作(更改通过并可以毫无问题地处理),一旦发布为功能应用程序,功能就不会触发。该函数存在,但总执行计数始终为0。这就像该函数未在计时器上运行并检查提要。我的功能应用程序中的其他功能按预期工作。
我的功能代码是
[FunctionName("EventSourceWrite")]
public static void Run([CosmosDBTrigger(
databaseName: "Puffin",
collectionName: "EventSource",
ConnectionStringSetting = "EventSourceConnection",
CreateLeaseCollectionIfNotExists = true,
LeaseCollectionName = "leases")]IReadOnlyList<Document> input, ILogger log)
{
if (input != null && input.Count > 0)
{
log.LogInformation("Documents modified " + input.Count);
log.LogInformation("First document Id " + input[0].Id);
var container = Cosmos.GetItemsContainer();
foreach (var doc in input)
{
var item = JsonConvert.DeserializeObject<Item>(doc.ToString());
// reset the Id
item.Id = item.ItemId;
if(!string.IsNullOrEmpty(item.CollectionId))
{
container.UpsertItemAsync(item, new Microsoft.Azure.Cosmos.PartitionKey(item.CollectionId));
}
}
}
}