0

我正在尝试使用 cosmos db changefeed 在 cosmos db 中的更改上触发 azure 函数。我正在尝试使用可用的重试策略触发“至少一次”功能:https ://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-error-pages?tabs =csharp

所以,我有一个由 CosmosDbTrigger 触发的天蓝色函数,它没有内置的弹性。我已经在这个天蓝色函数上声明了一个无限重试策略来解决这个问题。如果函数因任何原因失败,重试策略会按预期工作,并且函数会在固定延迟后重新运行。只要函数不返回成功结果,我还可以验证我在 cosmosdb 中的租约项不会更新。但是,一旦我停止我的天蓝色函数并重新启动它,该函数就不再重试。租约已更新,我对此的唯一解释是 cosmos db 中的检查点已提前。(如果我在 Visual Studio 中本地停止应用程序,通过禁用 azure 中的功能或重新部署 azure 中的功能,行为是相同的)

我的理解是,检查点应该只在 azure 函数的成功结果上被推进,但是当函数应用程序在重试运行之间停止时,它似乎也被推进。这使我无法保证我的功能至少执行一次。

有人可以尝试向我解释一下,为什么重启后没有重试该功能?

4

0 回答 0