程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了等待 azure 函数持久编排完成大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决等待 azure 函数持久编排完成?

开发过程中遇到等待 azure 函数持久编排完成的问题如何解决?下面主要结合日常开发的经验,给出你关于等待 azure 函数持久编排完成的解决方法建议,希望对你解决等待 azure 函数持久编排完成有所启发或帮助; @H_674_2@目前正在处理一个项目,我正在使用存储队列来获取要处理的项目。存储队列触发函数从队列中提取项目并启动持久编排。通常,根据文档,存储队列会并行处理 16 条消息(默认情况下)进行处理(https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue),但是由于编排刚刚开始(简单快速的过程),以防万一我有很多队列中的消息最终会同时运行很多编排。我希望能够启动编排并等待它完成,然后再接收下一批消息进行处理,以避免我的系统过载。我想出并且似乎有效的解决方案是:

public class Queuetrigger
    {
        [Functionname(nameof(Queuetrigger))]
        public async Task Run([Queuetrigger("queue-processing-test",Connection = "AzureWebJobsstorage")]Activity activity,[DurableClIEnt] IDurabLeorchestrationClIEnt starter,ILogger log)
        {
            log.Loginformation($"C# Queue trigger function processed: {activity.ActivityID}");
            String instancEID = await starter.StartNewAsync<Activity>(nameof(ActivityProcessingorchestrator),activity);            

            log.Loginformation($"Started orchestration with ID = '{instancEID}'.");

            var status = await starter.GetStatusAsync(instancEID);
            do
            {
                status = await starter.GetStatusAsync(instancEID);
            } while (status.Runtimestatus == orchestrationRuntimestatus.Running || status.Runtimestatus == orchestrationRuntimestatus.Pending);
        }
@H_674_2@ 基本上是接收消息,开始编排,然后在 do/while 循环中等待状态为 Pending 或 Running。 我在这里遗漏了什么,或者有什么更好的方法可以做到这一点(我在网上找不到太多东西)。 预先感谢您的意见或建议!

解决方法

@H_674_2@这可能不起作用,因为您可能会遇到超时导致重复的编排运行,或者只是强制您的函数应用向外扩展,从而破坏了代码的全部目的。

@H_674_2@相反,您可以依赖 Durable Functions 附带的 concurrency throttles。然队列触发器会将业务流程运行排队,但只有定义的最大值才会在函数的单个实例上运行。

@H_674_2@这仍会导致您的函数应用向外扩展,因此您在设置此限制时也必虑这一点,您还可以设置 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 应用设置来控制函数应用可以扩展的实例数量出去。

大佬总结

以上是大佬教程为你收集整理的等待 azure 函数持久编排完成全部内容,希望文章能够帮你解决等待 azure 函数持久编排完成所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。