【问题标题】:Durable Functions orchestrations in Java fail with "The function invocation resulted in a null response"Java 中的 Durable Functions 编排因“函数调用导致空响应”而失败
【发布时间】:2022-06-24 07:06:24
【问题描述】:
通过Azure Functions Java quickstart tutorial 运行时,我在尝试执行我的编排器功能时遇到了以下异常。
2022-06-23T06:30:19.172Z] System.Private.CoreLib:执行函数时出现异常:Functions.HelloCities。 Microsoft.Azure.WebJobs.Extensions.DurableTask:函数调用导致空响应。这意味着编排器函数实现不正确,Durable Task 语言 SDK 实现不正确,或者目标语言工作者没有将函数结果发送回主机。
这个错误是什么意思,我该如何解决?
以下是有关正在使用的 Azure Functions 核心工具的信息,这些信息显示在核心工具的输出中:
Azure Functions Core Tools
Core Tools Version: 3.0.3734 Commit hash: 61192bb28820be76916f85209916152801483456 (64-bit)
Function Runtime Version: 3.1.4.0
【问题讨论】:
标签:
azure-functions
azure-durable-functions
【解决方案1】:
此错误的潜在原因很少:
- 一个编排触发器函数将一个
null 值直接返回给触发器。
- 语言工作者(尚)不知道如何处理来自编排触发器函数的返回值,因此总是将
null 值返回给主机。
对于上下文,Durable Functions 编排和活动触发器不同于所有其他触发器,因为它们支持返回值。 Azure Functions 中没有其他触发器类型支持这一点(使用其他触发器类型时可以将值作为输出绑定返回,但不能将值直接返回给触发器本身)。为了支持 Durable Functions,Java 等语言工作者需要添加对处理这些返回值的支持。只有最新版本的 Java 工作者有此支持。
在这种特定情况下,发生此错误是因为正在使用旧版本的 Azure Functions Core Tools。您可以从上面的输出中看到已安装 Azure Functions Core Tools v3.0.3734。但是,Functions v3.x 所需的最低版本是 v3.0.4585。使用 Azure Functions v4.x 时,所需的最低版本为 v4.0.4590。
升级到最新版本的 Functions Core 工具将解决此问题。有关安装 Azure Functions 核心工具的各种方法的信息,请访问 here。