我正在 Azure Web 作业中同时运行 QueueTrigger 的多个实例。它是一个函数,但并行调用多次。
我的函数使用静态变量来缓存多次使用的数据。
有时,当函数运行时,我会在静态对象上发生冲突,这只能通过多个进程同时尝试访问它们来解释,但我被引导相信队列触发器的每个实例都是独立运行的。
所以我的问题是;
queuetrigger 实例是否隔离执行?
如果没有,加载“实例”时是否会触发特定事件,以便加载静态对象?
最佳答案
通过一些实验弄清楚了。
QueueTrigger 实例作为 WebJob 在内部运行的进程的一部分运行,并且不是孤立执行的。
如果 WebJobs 没有被告知保持打开状态,它们会自动关闭,并且会丢失所有静态数据。这可能会导致令人困惑的行为,但这是设计使然。
关于Azure WebJob 队列触发器执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52498474/