我有一个由多个任务组成的工作流程,其中每个任务都由 Azure 函数执行。这些功能由消息总线中的消息触发。 例如:
这是我的 azure 函数的示例源代码:
[Function(nameof(ProcessActivityRequest))]
public async Task ProcessActivityRequest(
[ServiceBusTrigger("QueueNameServicesBus",
Connection = "ServiceBus:ConnectionString")] ServiceBusReceivedMessage receivedMessage, FunctionContext context, CancellationToken cancellationToken)
{
try
{
var invocationId = context.InvocationId;
await AcitivityManager.Process(receivedMessage)
}
catch (Exception e)
{
_logger.LogError(e, e.Message);
}
}
当用户取消工作流时,我想确保所有关联的 Azure Function 实例也被取消。例如,考虑这样一种场景,其中我有一个名为
ProcessActivityRequest
: 的 Azure 函数
ProcessActivityRequest
的一个实例(我们称之为“流程 1”)。ProcessActivityRequest
实例(名为“进程 2”和“进程 3”)。我对此进行了研究,似乎没有直接的方法可以取消由服务总线触发的 Azure Function 的运行进程,除了关闭 Azure Function 主机,如此讨论中所述。
还有其他人遇到过这个问题吗?如果是这样,您找到解决方法了吗?
编辑:
包含 4 个任务的工作流程示例(使用 Elsa 工作流程) 取消工作流程: