关于调用一个实体的多个编排函数的问题

Question regarding multiple Orchestration functions calling one Entity

我想知道是否有人可以帮助我理解有关编排函数和实体的一些行为。

假设我有一个 HttpTriggered 函数,它启动一个编排调用(not signal)一个持久实体并运行一个长过程(30 秒)来更新一些字符串成员。我还有另一个 HttpTriggered 函数,它启动编排以调用相同的实体并获取该字符串。

我想知道的是,如果我触发第一个功能“A”,然后立即触发第二个功能“B”。当“B”调用实体获取字符串时,它是否等待“A”完成对实体的调用?或者“B”会从中得到一个“脏”值吗?

猜猜我想弄清楚的是,对于控制队列,对实体的所有调用是否都必须同步。

实体以 FIFO 顺序一次执行一个操作,因此如果您有两个业务流程(A 和 B)同时调用某个操作,则第二个操作(您的示例中的 B)将被迫等待A 的操作完成,可能长达 30 秒。因此在调用实体时不可能进行脏读。这种同步发生在 Durable Functions 扩展本身的内存中。

此处的文档中提到了这一点: https://docs.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.

这适用于实体 callssignals