重新启用 AzureFunction 后,对 CosmosDB 的更改是否会触发禁用的 AzureFunction?

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

我们目前有一些使用 Azure CosmosDB 触发器的 AzureFunction。据我了解,这使用由 CosmosDB 生成的

ChangeFeed
为触发的函数生成
input
元素。

我的问题是:如果我在 Azure 门户中使用 CosmosDB 触发器

disable
Azure 函数,对 CosmosDB 中的
Items
执行大量更改,然后
re-enable
给定的 AzureFunction,该函数会在所有更改,还是这些更改根本不会得到处理?

此外,如果该功能实际上不处理禁用时所做的更改,我将来在处理对这些相同项目所做的更改时是否会遇到任何问题?

我问的原因是因为我们遇到一种情况,需要对 CosmosDB 中的大量项目进行批量更改,但这些更改不需要执行相关的 AzureFunction。事实上,我们真的宁愿该函数不执行,以避免其他服务过载。

谢谢!

azure azure-functions azure-cosmosdb cosmosdbtrigger
1个回答
0
投票

我的问题是:如果我在 Azure 门户中使用 CosmosDB 触发器禁用 Azure 函数,对 CosmosDB 中的项目执行大量更改,然后重新启用给定的 AzureFunction,该函数是否会接受所有更改,或者这些更改根本不会被处理?

当您使用 CosmosDB 触发器禁用 Azure 函数时,该函数在禁用期间不会处理来自更改源的任何更改。如果您在禁用该功能时对 CosmosDB 中的项目进行更改,则当您重新启用该功能时,这些更改将不会被该功能拾取。

但是,一旦您重新启用 Azure Function,它将从您重新启用它之后开始处理更改。它不会追溯处理禁用期间发生的更改。

此外,如果该功能实际上不处理禁用时所做的更改,我将来在处理对这些相同项目所做的更改时是否会遇到任何问题?

应该不会有什么问题。重新启用 Azure Function 后,它将处理这些项目在从 CosmosDB 更改源重新启用后发生的新更改。

如果您想在批量更改时避免其他服务过载,请考虑是否可以暂时将 CosmosDB 触发器更改为定时器触发函数,或者手动触发批处理,然后重新启用 CosmosDB 触发器。这样,您可以控制函数何时处理批量更改。

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