【问题标题】:How to get an ILogger from an Activity Function?如何从活动函数中获取 ILogger?
【发布时间】:2019-02-08 18:43:44
【问题描述】:

我在未来项目的原型中使用 Durable Azure Function。

基本上,我有一个客户端 Azure 函数,由启动 Orchestrator 的 HTTP POST 请求触发。然后,Orchestrator 决定触发一个 Activity。没什么复杂的。

这是我正在做的一个示例:

[FunctionName("ClientFunction")]
public static async Task<HttpResponseMessage> OnHttpTriggerAsync([HttpTrigger(AuthorizationLevel.Anonymous, "post")]
            HttpRequestMessage request, [OrchestrationClient] DurableOrchestrationClient starter, ILogger logger)
{
    // Triggers the orchestrator.
    string instanceId = await starter.StartNewAsync("OrchestratorFunction", null);

    return new HttpResponseMessage(HttpStatusCode.OK);
}


[FunctionName("OrchestratorFunction")]
public static async Task DoOrchestrationThingsAsync([OrchestrationTrigger] DurableOrchestrationContext context, ILogger logger)
{
    // Triggers some serious activity.
    await context.CallActivityAsync("ActivityFunction", null);
}

[FunctionName("ActivityFunction")]
public static Task DoAnAwesomeActivity([ActivityTrigger] DurableActivityContext context)
{
    // Short & Sweet activity...
    // Wait... Where's my logger?
}

Orchestrator 和客户端函数都被赋予了ILogger 而不是活动函数;作为documentation 中的stated(特定参数或DurableActivityContext 实例),Activity 函数只获取一个参数。而且我不认为声明这些方法的静态类可以保留对 ILogger 的引用。

我知道活动函数应该执行一项小工作,但如果我能够记录如果出现问题时使用适当的值调用了活动,我会更舒服(它会:))。

问题

Activity如何访问ILogger

【问题讨论】:

  • ILogger放在Activity Function的方法签名会出现什么问题?在 Activity 中使用 ILogger 应该没有限制,我也没有看到任何错误。
  • 我没有测试它,因为这个特定的comment:“不可能将多个参数直接传递给一个活动函数。”我认为它要么是我的自定义参数,要么是 DurableActivityContext ...我一回来工作就会尝试! :)

标签: c# azure azure-functions azure-durable-functions


【解决方案1】:

无法直接将多个参数传递给活动函数。在这种情况下,建议传入一个对象数组或在 .NET 中使用 ValueTuples 对象。

您关心的这个restriction 是在谈论我们从Orchestrator 传递给Activity Function 的参数。这并不意味着我们只能在 Activity 方法签名中使用一个参数。随时在此处添加ILogger 并根据需要完成您的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 2019-05-21
    • 2013-08-10
    相关资源
    最近更新 更多