dependency-injectionazure-functionsautofacazure-functions-runtimesingle-instance

Autofac Dependecy Injection Azure function SingleInstance


I followed this links. https://dontcodetired.com/blog/post/Azure-Functions-Dependency-Injection-with-Autofac

Autofac Binding at Runtime

It worked fine. I want to know when azure function scales, object injected into azure function will be shared by all the instances of azure function. In this case object is NaiveInvestmentAllocator.

Let me know if you have any doubt. Also I actually implemented combination of two links. It is like factory pattern is used to get the object of instances from Autofac container. I can share the code if anyone want But I dont think that necessary.

My question is if I implemented first link, injected object is shared by all instances of same azure function or not?


Solution

  • Nope.

    As Azure Functions scale, the other instances run on different VMs/Containers. Its similar to running your function app on different VMs/Containers manually.

    If the requirement is to have a shared state across multiple function app instances, you should offload the state persistence to something like Redis, Table Storage, Blob Storage, etc.

    For example, you can use Azure Cache for Redis for example and inject a client for the same into your service class.

    If the intention is to save the number of open connections, note that the limit is per instance.