我们有一个Azure函数,它应该同时处理多个服务总线触发器,我假设发生的情况是它被拆分到多个实例中,这会导致我们端部出现一些并发问题。
我们需要我们的函数充当一个单例,这样我们就可以一次处理一个请求,而不会发生任何冲突。从我们在本文中的研究来看(
https://docs.microsoft.com/en-us/azure/app-service/webjobs-sdk-how-to#singleton-attribute
)我们应该能够做到这一点。
我们的功能如下:
[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 }}");
log.LogInformation($"{{ Message sent to account creation handler }}");
}
为了备份,我们在host.json文件中也有这个文件,
{
"serviceBus": { "maxConcurrentCalls": 1 }
}
但不管什么原因,我们的函数仍然是并行的。有什么想法吗?