【发布时间】:2017-07-11 22:36:47
【问题描述】:
我有一个 Azure 函数(基于新的 C# 函数而不是旧的 .csx 函数),只要消息进入 Azure 服务总线队列就会触发。一旦函数被触发,它就会开始处理服务总线消息。它解码消息,读取一堆数据库,更新一堆其他的,等等......这有时可能需要超过 30 分钟。
由于这不是一个时间敏感的过程,30 分钟甚至 60 分钟都不是问题。问题是与此同时,Azure Function 似乎又开始了,一次又一次地接收相同的消息并重新处理它。这是一个问题,会导致我们的业务逻辑出现问题。
那么,问题是,我们能否强制 Azure 函数以单例模式运行?或者如果这不可能,我们如何更改轮询间隔?
【问题讨论】:
-
您的函数应用是在应用服务计划还是消费计划下创建的?在应用服务计划下,确保 AlwaysOn 已打开。在 Consumption Plan 下,Function App 会在 5 分钟后终止(可配置为延长至 10 分钟,请参阅github.com/Azure/azure-webjobs-sdk-script/wiki/host.json 处的“functionTimeout”值),这可以解释您所看到的行为。
-
我有应用服务计划。我的功能没有终止。事实上,相反的情况正在发生。多个函数正在处理消息。
标签: c# azure singleton azureservicebus azure-functions