【发布时间】: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