首页 > 解决方案 > 不尊重任务中心名称的持久功能

问题描述

我在同一个存储帐户上运行了 2 个持久功能 - 一个具有默认集线器名称,而另一个在 host.json 中指定。

每个持久函数都有一个名为“RunOrchestrator”的函数,似乎当将新作业添加到MyUtilityExecutorHub它们的数据中时,它们就会存储在DurableFunctionsHubInstances另一个函数的表中。

这是第二个函数的 host.json 文件的样子。

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "hubName": "MyUtilityExecutorHub"
    }
  }
}

在 Kudu 中查看时,第二个函数的 host.json 如上,那么为什么作业会转到错误的后备存储表?

编辑:在我们的场景中,为了永远不必再次处理它,最简单的解决方法是为每个函数设置一个存储帐户,但我想深入了解它!

标签: azureazure-functionsazure-durable-functions

解决方案


文件

当共享存储帐户中有多个任务中心时,名称是一个任务中心与另一个任务中心的区别。如果您有多个函数应用共享一个共享存储帐户,则必须在 host.json 文件中为每个任务中心显式配置不同的名称。否则,多个功能应用程序将相互竞争消息,这可能导致未定义的行为,包括编排意外地“卡”在 Pending 或 Running 状态。


推荐阅读