问题描述
我有一个应用程序,其中有数千个需要执行的独立计算。我正在通过Azure中的队列触发函数来实现这一点。一切正常。计算的特定性质是,在执行每个计算的细节之前,每个函数调用都会执行大量的初始开销,所有初始调用的开销都相同(基本上是从数据库/缓存中获取数据) 。所以我在想,一旦函数完成,它可以检查队列中是否还有未处理的消息,如果是,则将消息弹出队列,并在相同的函数中执行此计算,从而无需执行最初的开销又来了。这是可能的,还是会混淆后台的队列/功能机制?
解决方法
根据您的其他一些问题,我假设您正在谈论 C# Azure函数。
我建议创建一个服务,您将其注册为单例,它会承担初始开销并将其注入到您的Azure Function类中。
这样,您可以依靠Azure Functions缩放机制,并且每个函数实例仅进行一次初始化。