我想知道是否有人可以帮助我理解有关编排功能和实体的一些行为。
假设我有一个 HttpTriggered 函数,它启动一个调用(不发出信号)持久实体的编排,并运行一个很长的过程(30 秒)来更新某些字符串成员。我还有另一个 HttpTriggered 函数,它启动编排来调用同一实体并获取该字符串。
我想知道的是,如果我触发第一个函数“A”,然后立即触发第二个函数“B”。当“B”调用实体获取字符串时,它是否等待“A”完成对实体的调用?或者“B”会从中获得“脏”值吗?
猜猜我想弄清楚的是,对实体的所有调用是否都必须与控制队列同步。
最佳答案
实体按照 FIFO 顺序一次执行一个操作,因此如果您有两个编排(A 和 B)同时调用某个操作,则第二个操作(示例中的 B)将被迫等待 A 的操作操作完成可能需要长达 30 秒的时间。因此,调用实体时不可能出现脏读。这种同步发生在 Durable Functions 扩展本身的内存中。
这里的文档中提到了这一点: https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-entities#general-concepts
To prevent conflicts, all operations on a single entity are guaranteed to execute serially, that is, one after another.
这适用于实体调用和信号。
关于azure - 关于调用一个实体的多个编排功能的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68747283/