问题标签 [azure-durable-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1736 浏览

azure-functions - 在 Azure Durable Function Activity 中使用 Task.Delay

可以在这样的 Azure 持久功能活动中使用 Task.Delay吗?

我正在轮询应该在 20-30 秒左右到达的数据的存储。

此处context.CreateTimer解释的功能计时器功能仅适用于 Azure编排功能,不适用于活动功能。

0 投票
1 回答
540 浏览

azure-durable-functions - 持久任务发布后更新“MaxConcurrentActivityFunctions”

我有一个在 Azure 上运行的具有持久任务的函数应用。部署/发布后更改“MaxConcurrentActivityFunctions”绑定(即在 host.json 中)的最佳方法是什么?

"extensions": { "durableTask": { "MaxConcurrentActivityFunctions": 4, // 确保映射器的横向扩展 } }

我想根据我使用的服务计划类型将其更改为 1 或 4。

我一直无法找到使用 Azure SDK 或使用 rest api 的方法。我能想到让它工作的唯一方法是停止函数应用程序,下载 host.json 文件,修改它,上传它,然后重新启动函数应用程序。

对我来说似乎有点矫枉过正。我错过了什么吗?

0 投票
2 回答
101 浏览

azure-functions - Azure Durable Functions - 诊断故障

我正在测试持久功能如何扇入/扇出以及如何扩展我的代码。对于这个例子,我模拟了许多短期运行的、CPU 密集型的操作。

并非所有活动似乎都已完成,我不确定为什么或在哪里查找失败日志。

请看下面的代码:

我几乎在每一个案例中都得到了大约 96% 的预期活动完成。这是来自历史表中的结果,其中 EventType = TaskCompleted

同样在“实例”表中,RuntimeStatus 只是保持在“正在运行”

我在哪里可以找到失败列表?

谢谢你的帮助

缺口

0 投票
1 回答
816 浏览

c# - 直接调用 Azure Durable Functions 的活动和子编排

除了通过另一个专门的持久函数之外,还有什么方法可以直接调用持久函数的活动?

例如,我有一个持久函数D、调用活动A1A2子编排S

在其他情况下,我不需要完整的逻辑,D我宁愿直接调用A1or S。理想情况下,我希望那些有单独的任务队列,他们需要处理(AFAIK,持久函数实际上是这样工作的,所以实际上A1确实S有任务队列)。D可以使用该队列,并且我还想在需要其他代码(非持久函数)时手动将消息推送到那里。

我现在看到的唯一解决方案是将我需要的每个活动包装到单独的原始持久函数DA1DS,这会将调用转发到相应的活动。但这显然是一种开销,会降低系统可靠性。有没有更好的方式打电话A1S直接打电话?

0 投票
1 回答
327 浏览

c# - Azure Function v2 引用了 Newtonsoft.Json 版本高于 Microsoft.NET.Sdk.Functions 的项目

我正在编写一个 v2 Azure 持久函数。将 C# 对象传递给辅助活动函数时,我在JsonConverter用于序列化传递的类型的自定义中遇到运行时错误。自定义JsonConverter位于必须引用 Newtonsoft.Json 12.x 的库中,而 Microsoft.NET.Sdk.Functions 被锁定到 11.0.2。

jObject 错误 CS1705:具有标识“ContractLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”的程序集“ContractLibrary”使用“Newtonsoft.Json,Version=12.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed”比具有标识“Newtonsoft.Json,版本=11.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed”的引用程序集“Newtonsoft.Json”更高的版本

我相信这个GitHub 问题是相关的。对该问题的此评论似乎表明将 Newtonsoft.Json 12.x 添加为 Function 项目的直接依赖项可能会有所帮助。这在另一个 Function 项目中有所帮助,但现在我又碰到了这堵墙。我能做些什么来减轻这种情况吗?

0 投票
0 回答
265 浏览

azure-functions - 在 Azure Function App 预热期间调用 Javascript Durable Functions 失败

在 GitHub 上也有报道: https ://github.com/Azure/azure-functions-durable-js/issues/86

使用 Azure Function Apps 的消费层时,服务进入空闲状态。对服务的下一个请求“唤醒”服务,并且可能需要一段时间才能响应(这是预期的)。

当服务“热”时,一切正常,但是,如果唤醒请求调用 Durable Functions 库中的 Orchestrator 函数,则 Orchestrator 会引发 Service Unavailable 错误:

堆栈跟踪:

我们遵循这种模式,使用 HTTP 触发器调用协调器函数: https ://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-sequence

当服务“热”时,请求完美运行,功能按预期执行。如果调用编排器的 HTTP 请求是触发预热过程以使服务脱离空闲状态的请求,我们只会看到此错误。

0 投票
1 回答
314 浏览

triggers - Azure Function BlobTrigger 触发,但未找到 blob

我终于用下面的代码重现了这个问题。我只是用 blob 触发器触发了一个持久函数,并且在其中一个活动函数中我读取了 blob。但是...当我阅读 blob 时,我收到一个错误,即 blob 不存在。

有人可以解释我在这里做错了什么吗?

代码:

0 投票
1 回答
359 浏览

c# - 从持久功能向服务总线大规模发送消息

我有一个场景,其中一个活动函数检索了一组记录,这些记录可以从 1000 到 100 万不等,并存储在一个对象中。然后下一个活动函数使用该对象将消息并行发送到服务总线。

目前,我在该对象上使用 for 循环将对象中的每条记录发送到服务总线。请让我知道是否有更好的替代模式,其中对象或内容(无论它存储在何处)被清空以发送到服务总线,并且该功能自动扩展而不将处理限制为 for 循环。

  • 使用了来自一个函数的 for 循环,该函数编排为对象中的记录调用活动函数。
  • 查看了活动函数的扩展,对于一组 18000 条记录,它已扩展到 15 个实例并在 4 分钟内处理了整个集合。
  • 目前该功能正在使用消费计划。检查发现只有该功能应用正在使用该计划并且未共享。
  • 消息发送到的主题有另一个服务正在监听它,以读取消息。
  • 编排和活动功能的实例计数默认情况下可用。

应通过适当地扩展活动功能,将消息快速发送到服务总线。

0 投票
1 回答
433 浏览

azure - 调用 CallActivityWithRetryAsync() 时,Azure DurableOrchestration 函数卡住(?)处于“WaitingForActivation”状态

我正在尝试在本地逐步执行(使用 Visual Studio 2019)Durable 功能,但是当我从 OrchestrationTrigger 调用 context.CallActivityWithRetryAsync("MyActivity_Activity", retryOptions, myActivityParameters) 时,该调用始终返回以下内容:

Id = [xxxx],状态 = WaitingForActivation,方法 =“{null}”,结果 =“{尚未计算}”

我的第一个猜测是某处可能存在死锁,但我重新启动了我的机器,仍然看到相同的结果。另外,我尝试在活动的第一行(MyActivity_Activity)设置断点,但没有命中。任何帮助将不胜感激!


使用以下内容:

  • VS 2019 专业版
  • .Net 核心 2.2
  • Microsoft.Azure.DurableTask.AzureStorage v1.6.2
  • Microsoft.Azure.WebJobs.Extensions.DurableTask v1.8.2
  • Microsoft.NET.Sdk.Functions v1.0.29

    ...等。

以下是一些相关的代码片段:

0 投票
1 回答
206 浏览

javascript - 在 Azure 的 Orchestrator 生成器中等待 Promise

使用 Azure 中的示例创建持久函数 ( https://docs.microsoft.com/en-us/azure/azure-functions/durable/quickstart-js-vscode ),我有一个 Orchestrator 的工作示例通过每个子进程我在代码中手动创建的 JSON 文档。但是,当我尝试从 Orchestrator 中调用一个返回 Promise 的函数时,我收到一个错误,如下面的代码所示。sleep 函数只是对 DB 调用的模拟,因为对 Azure Cosmos DB 的调用被包装在 Promise 中,并在它拥有所有文档时返回。

问题——有没有办法让 Orchestrator 在开始链接模式之前等待我的睡眠功能来解决它​​的承诺?

+++++++++++++++++++++++++++++++