ahe*_*ick 5 azure azure-functions azure-durable-functions
我正在查看此示例以在设置超时后运行持久函数 Activity。
这将允许我的函数活动执行数据处理,然后在它尝试再次加载之前等待 1 小时。这将永远持续下去。完美的。
但是,将函数发布到 Azure 时,我不想通过关联的 HTTP 触发器手动调用/启动函数。我只希望持久功能自动启动并开始处理。
这可能吗?如果没有,建议的解决方法是什么?
谢谢!
正如评论中所讨论的,一种方法是在发布管道中添加一个新任务。
以下是我从您的问题中对您的设置的理解:
[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)
{
DateTime deadline = context.CurrentUtcDateTime.Add(TimeSpan.FromHours(1));
await context.CreateTimer(deadline, CancellationToken.None);
// Triggers some yout activity.
await context.CallActivityAsync("ActivityFunction", null);
}
[FunctionName("ActivityFunction")]
public static Task DoAnAwesomeActivity([ActivityTrigger] DurableActivityContext context)
{
}
Run Code Online (Sandbox Code Playgroud)
现在,每次部署新版本的 Function App 时,都需要运行协调器。但是,我认为它不能单独启动。
我建议使用一个简单的 bash 脚本(使用curl或其他东西)来调用ClientFunction适当的 URL。
最重要的是,此解决方案的好处之一是,如果 Azure Function 没有响应,您可能会导致部署失败。
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |