我有两个 Azure 函数。我可以将它们视为“生产者-消费者”。一种是基于“HttpTrigger”的函数(生产者),可以随机触发。它将输入数据写入静态“ConcurrentDictionary”。第二个是“定时器触发器”Azure Function(consumer)。它定期从“Producer”函数App使用的同一个“ConcurrentDictionary”中读取数据,然后进行一些处理。
这两个功能都在同一个 .Net 项目中(但在不同的类中)。当我在本地运行应用程序时,通过静态“ConcurrentDictionary”进行的内存数据共享工作得非常好。在本地运行时,我假设它们在同一进程下运行。但是,当我在 Azure 门户中部署这些函数时(它们在同一个函数 App 资源中),我发现通过静态“ConcurrentDictionary”进行数据共享不起作用。
我只是想知道,如果在 Azure 门户中,这两个函数都有自己的进程(可能这就是他们无法共享进程内静态集合的原因)。如果是这种情况,我有什么选择让这两个功能作为正确的“生产者-消费者”工作?将两个函数保持在同一个类中会有帮助吗?
可能情况与帖子中描述的相反 - “https://stackoverflow.com/questions/62203987/do-azure-function-from-same-app-service-run-in-same-instance” . 与帖子中的问题相反,我希望两个函数都使用静态类实例的相同静态成员。
很抱歉我不能做太多实验,因为部署是通过 Azure-DevOps 管道完成的。存储库中签入过多有点不方便。正如我所提到的,它在本地运行良好。所以,我不知道如何在本地环境中重新创建 Azure 门户中发生的事情,以便我可以尝试不同的选项?有没有我想申请的可配置的东西?