繁体   English   中英

Azure 持久功能终止不起作用

[英]Azure Durable functions Terminate doesn't work

我需要运行运行很长时间(30 分钟 - 2 小时)的后台进程,目前我为此使用 azure functionapp(高级计划)并且它工作正常。 现在我必须添加一个功能来取消这个过程,每当用户想要终止进程时。 所以我发现在 Durable 函数中有一些方法可以做,我尝试了示例,但即使在我调用 Terminate function 之后,正在进行的编排器进程仍在运行并且不会停止,并且它还会再次重新调用编排器。 我不确定哪里出了问题。 下面是代码片段。

  const client = df.getClient(context);
    var instanceId = '';
    //Check if queryparam has instanceid, if yes terminate process else create new
    if (req.params.id != "0") {
       await client.terminate(req.params.id,"test");
    } else {
        instanceId = await client.startNew(req.params.functionName, undefined, req.body);
    }
    context.log(`Started orchestration with ID = '${instanceId}'.`);
    return client.createCheckStatusResponse(context.bindingData.req, instanceId);

根据文档检查功能版本,因为您必须具有不同类型的属性:

用于持久函数 2.x。 对于 Durable Functions 1.x,必须使用 OrchestrationClient 属性而不是 DurableClient 属性,并且必须使用 DurableOrchestrationClient 参数类型而不是 IDurableOrchestrationClient

如果我们阅读更多,我们可以理解 function 不会突然结束:

终止的实例最终将转换为 Terminated state。但是,这种转换不会立即发生。 相反,终止操作将与该实例的其他操作一起在任务中心排队。 您可以使用实例查询 API 来了解终止实例何时实际达到 Terminated state。

实例终止当前不传播。 活动函数和子编排运行直至完成,无论您是否已终止调用它们的编排实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM