C# 作为单独实例运行的Singleton Azure函数
我们有一个Azure函数,它应该同时处理多个service bus触发器,我假设它被拆分到多个实例中,这会在我们端造成一些并发问题 我们需要我们的函数充当一个单例,这样我们就可以一次处理一个请求而不发生任何冲突。通过本文()中的研究,我们应该能够实现这一点 我们的函数如下所示:C# 作为单独实例运行的Singleton Azure函数,c#,azure,concurrency,azure-functions,C#,Azure,Concurrency,Azure Functions,我们有一个Azure函数,它应该同时处理多个service bus触发器,我假设它被拆分到多个实例中,这会在我们端造成一些并发问题 我们需要我们的函数充当一个单例,这样我们就可以一次处理一个请求而不发生任何冲突。通过本文()中的研究,我们应该能够实现这一点 我们的函数如下所示: [Microsoft.Azure.WebJobs.Singleton(Mode = SingletonMode.Listener)] [FunctionName("AccountCreatedSubscriber")]
[Microsoft.Azure.WebJobs.Singleton(Mode = SingletonMode.Listener)]
[FunctionName("AccountCreatedSubscriber")]
public static void Run([ServiceBusTrigger("accountscontacts-account-created", "license-keys", Connection = "FBISEventBus")]BrokeredMessage message, ILogger log)
{
log.LogInformation($"{{ Message received from accountscontacts-account-created topic }}");
// Do Work
log.LogInformation($"{{ Message sent to account creation handler }}");
}
对于备份,我们的host.json文件中也有这个
{
"serviceBus": { "maxConcurrentCalls": 1 }
}
但不管出于什么原因,我们的功能仍然并行运行。有什么想法吗
网站\u MAX\u动态\u应用程序\u SCALE\u OUT
设置为1
in{
"version": "2.0",
"extensions": {
"serviceBus": {
"messageHandlerOptions": {
"maxConcurrentCalls": 1
}
}
}
}
通过测试,我可以实现以下功能:
此外,由于我们只有一个实例在运行(感谢网站\u MAX\u DYNAMIC\u APPLICATION\u SCALE\u OUT=1),因此运行的实例共享相同的静态变量。对不起,我们一开始试过这个,我认为它对我们没有任何帮助,但我意识到这是一个不同的问题,这似乎有助于我们处理的一些并发性,谢谢。