Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 作为单独实例运行的Singleton Azure函数_C#_Azure_Concurrency_Azure Functions - Fatal编程技术网

C# 作为单独实例运行的Singleton Azure函数

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")]

我们有一个Azure函数,它应该同时处理多个service bus触发器,我假设它被拆分到多个实例中,这会在我们端造成一些并发问题

我们需要我们的函数充当一个单例,这样我们就可以一次处理一个请求而不发生任何冲突。通过本文()中的研究,我们应该能够实现这一点

我们的函数如下所示:

[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

  • 在门户中检查Azure功能运行时版本(平台功能>功能应用设置)。如果是~2,我们需要修改中的服务总线设置,如下所示

    {
        "version": "2.0",
        "extensions": {
            "serviceBus": {
                "messageHandlerOptions": {
                   "maxConcurrentCalls": 1
                }
            }
        }
    }
    

  • 通过测试,我可以实现以下功能:

  • 如果您的功能在消费计划中,请在应用程序设置中将网站\u MAX\u动态\u应用程序\u SCALE\u OUT设置为1
  • [Microsoft.Azure.WebJobs.Singleton(Mode=SingletonMode.Function)]

  • 此外,由于我们只有一个实例在运行(感谢网站\u MAX\u DYNAMIC\u APPLICATION\u SCALE\u OUT=1),因此运行的实例共享相同的静态变量。

    对不起,我们一开始试过这个,我认为它对我们没有任何帮助,但我意识到这是一个不同的问题,这似乎有助于我们处理的一些并发性,谢谢。