Azure functions 用于多个计时器触发器的单个Azure作业

Azure functions 用于多个计时器触发器的单个Azure作业,azure-functions,multi-tenant,timer-trigger,Azure Functions,Multi Tenant,Timer Trigger,我们托管了一个azure应用程序,并通过为每个组织创建一个单独的DB为多个组织启用了该应用程序。现在,我们需要运行后台服务,该服务需要生成: 在启用TimerTrigger的情况下配置Azure功能(运行时间将由每个组织在管理应用程序中配置) Azure函数应根据组织配置的时间调用尽可能多的次数(同一函数将被称为多个实例) 每个组织的职能计划时间应根据需要进行更新(通过c#代码)-我不确定是否可以这样做 根据时间和组织详细信息,函数需要从各自的数据库中获取记录并对其进行处理 为了最大限度地减少功

我们托管了一个azure应用程序,并通过为每个组织创建一个单独的DB为多个组织启用了该应用程序。现在,我们需要运行后台服务,该服务需要生成:

  • 在启用TimerTrigger的情况下配置Azure功能(运行时间将由每个组织在管理应用程序中配置)

  • Azure函数应根据组织配置的时间调用尽可能多的次数(同一函数将被称为多个实例)

  • 每个组织的职能计划时间应根据需要进行更新(通过c#代码)-我不确定是否可以这样做

  • 根据时间和组织详细信息,函数需要从各自的数据库中获取记录并对其进行处理

  • 为了最大限度地减少功能超时问题,记录将作为批处理,并在相应的组织数据库中更新

  • 让我们知道你对此的意见


    谢谢大家!

    功能不打算长时间运行。如果有多个租户和/或报告生成速度慢,则可能会终止函数调用(默认情况下5分钟后)

    如果您需要按计时器运行长作业,则Web作业更适合

    如果我要使用函数,我会稍微改变:

  • 计时器触发功能每天运行(或以任何频率运行),并向每个租户发送一条消息到一个队列,说“请为租户X生成报告”。它会跑得很快

  • 另一个队列触发函数侦听该队列,获取消息,并为租户X的每条消息仅生成一个报告

  • 这样,您可以更均匀地分配工作,还可以隔离可能的故障,并可能并行生成多个报告


    您可能还想看看在哪里可以实现类似的工作流:activity函数用于生成单个报表,orchestrator函数用于为每个租户调用报表。

    我不太同意您的看法,即使您正确地说azure函数不是为运行长时间任务而设计的。如果您不使用消费计划,则5分钟的限制不适用。我的想法是,您不想让HttpTrigger函数运行长时间运行的任务,但在其他情况下,这是可以的。我认为这确实是一个消耗计划。否则,对正常的web作业没有任何好处。在这种情况下不需要http触发器。您好,谢谢您的评论。报告生成逻辑将在SQL DB中,azure函数将触发SP。您好,感谢您的评论。我更新了我的问题。请看一看,它会起作用的。我不知道这是否是你的最佳选择。