CosmosDB 触发器无法与 WebJobs 一起使用

问题描述 投票:0回答:1

我的 3 个

CosmosDBTrigger
上有
WebJobs
,它针对同一个容器。意思是,每当此容器上发生任何
Upsert
时,都应该触发这 3 个。我看到了三分之一的工作没有触发的问题,并试图理解原因。

出于调试目的,我手动禁用了这些作业,其中我遇到了

WebJob2
WebJob3
的断点。当我对
WebJob1
执行相同操作时,什么也不会发生。

这就是

CosmosDBTrigger
在工作中的定义方式。如果触发 2 个作业,那么逻辑对我来说似乎很好。此处,
WebJob1
未触发。我在这里缺少什么?

WebJob1:

public async Task ProcessMessageAsync(
    [CosmosDBTrigger(
      "%Database:DatabaseName%", 
      "%Database:ContainerName%", 
      Connection = CosmosDbConnectionString, 
      CreateLeaseContainerIfNotExists = true, 
      LeaseContainerName = "leases", 
      LeaseContainerPrefix = nameof(WebJob1)
    )]
      string documents, CancellationToken cancellationToken)
{
  // Logic
}

WebJob2:

public async Task ProcessMessageAsync(
    [CosmosDBTrigger(
      "%Database:DatabaseName%", 
      "%Database:ContainerName%", 
      Connection = CosmosDbConnectionString, 
      CreateLeaseContainerIfNotExists = true, 
      LeaseContainerName = "leases", 
      LeaseContainerPrefix = nameof(WebJob2)
    )]
      string documents, CancellationToken cancellationToken)
{
  // Logic
}

WebJob3:

public async Task ProcessMessageAsync(
    [CosmosDBTrigger(
      "%Database:DatabaseName%", 
      "%Database:ContainerName%", 
      Connection = CosmosDbConnectionString, 
      CreateLeaseContainerIfNotExists = true, 
      LeaseContainerName = "leases", 
      LeaseContainerPrefix = nameof(WebJob3)
    )]
      string documents, CancellationToken cancellationToken)
{
  // Logic
}
azure-webjobs c#-6.0 cosmosdbtrigger
1个回答
0
投票

解决此问题的理论:这是由于手动添加或删除租赁容器中的条目,导致租赁容器损坏并导致作业指针未对齐。重新部署 Cosmos 的 ARM 模板解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.