首页 > 解决方案 > 在 Azure 持久函数更改状态时获取事件

问题描述

我想监视 Azure Durable Orchestrator Function 的运行实例是否有更改(例如它何时完成、失败等)

我知道我可以轮询状态 API 的更改,但我想知道是否有任何基于推送的功能。我查看了源代码,但似乎找不到任何线索来支持此功能的扩展点、接口等。

关于如何实现这一目标的任何想法?

谢谢!

标签: azure-functionsazure-webjobsazure-webjobssdkazure-durable-functions

解决方案


目前,发布编排生命周期事件(例如创建、完成和失败)仅限于自定义Azure 事件网格主题。此功能目前处于预览阶段。请参阅将 Durable Functions 发布到 Azure 事件网格(预览版)

耐用功能 2.x

notifications部分添加到durableTask文件的属性中,替换<topic_name>为您选择的名称。如果durableTaskorextensions属性不存在,请像以下示例一样创建它们:

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "notifications": {
        "eventGrid": {
          "topicEndpoint": "https://<topic_name>.westus2-1.eventgrid.azure.net/api/events",
          "keySettingName": "EventGridKey"
        }
      }
    }
  }
}

事件架构

以下列表解释了生命周期事件架构:

  • id:事件网格事件的唯一标识符。
  • subject:事件主题的路径。durable/orchestrator/{orchestrationRuntimeStatus}. {orchestrationRuntimeStatus}将是Running, Completed, Failed, 和Terminated.
  • data:持久功能特定参数。
    • hubName任务中心名称。
    • functionName:Orchestrator 函数名称。
    • instanceId: 持久函数 instanceId。
    • reason:与跟踪事件相关的附加数据。有关详细信息,请参阅Durable Functions (Azure Functions) 中的诊断
    • runtimeStatus:编排运行时状态。正在运行、已完成、失败、已取消。
  • eventType:“协调器事件”
  • eventTime:事件时间(UTC)。
  • dataVersion:生命周期事件模式的版本。
  • metadataVersion:元数据的版本。
  • topic:事件网格主题资源。

推荐阅读