azure - 不尊重任务中心名称的持久功能
问题描述
我在同一个存储帐户上运行了 2 个持久功能 - 一个具有默认集线器名称,而另一个在 host.json 中指定。
每个持久函数都有一个名为“RunOrchestrator”的函数,似乎当将新作业添加到MyUtilityExecutorHub
它们的数据中时,它们就会存储在DurableFunctionsHubInstances
另一个函数的表中。
这是第二个函数的 host.json 文件的样子。
{
"version": "2.0",
"extensions": {
"durableTask": {
"hubName": "MyUtilityExecutorHub"
}
}
}
在 Kudu 中查看时,第二个函数的 host.json 如上,那么为什么作业会转到错误的后备存储表?
编辑:在我们的场景中,为了永远不必再次处理它,最简单的解决方法是为每个函数设置一个存储帐户,但我想深入了解它!
解决方案
从文件:
当共享存储帐户中有多个任务中心时,名称是一个任务中心与另一个任务中心的区别。如果您有多个函数应用共享一个共享存储帐户,则必须在 host.json 文件中为每个任务中心显式配置不同的名称。否则,多个功能应用程序将相互竞争消息,这可能导致未定义的行为,包括编排意外地“卡”在 Pending 或 Running 状态。
推荐阅读
- python - 我希望只接收符合特定条件的链接
- regression - 固定效应估计和损耗混淆
- protocols - BitTorrent 协议 - DL/UL 统计数据的完整性(跟踪器)
- java - 如何修复 com.mongo.MongoSocketReadException,并在尝试插入文档时显示消息“过早到达 Stream 的末尾”?
- javascript - CKEditor:图像已上传,但仍然收到警告说无法上传文件:文件名(使用 ckfinder)在反应
- javascript - 有没有办法可以在 JavaScript 或 JQuery 中创建可编辑的日历
- java - 如何不在 JTable 中添加行?
- flutter - 不良状态:无元素,Flutter 错误。我正在尝试在卡片内建立一个可滚动的列表。我已经证明了截图
- java - “未使用的 catch 子句变量”的检查器?
- tsqlt - tSQLt.AssertEqualsTable 顺序不匹配错误