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

时间:2018-01-12 20:36:56

标签: azure-functions multi-tenant timer-trigger

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

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

  2. 应根据组织配置的时间多次调用Azure函数(相同的函数将被称为多个实例)

  3. 每个组织的功能计划时间应按需更新(通过c#代码) - 我不确定是否可以这样做

  4. 根据时间和组织细节,函数需要从相应的数据库中提取记录并进行处理。

  5. 最小化函数超时问题 - 记录将作为批处理进行处理,并在相应的组织数据库中进行更新。

  6. 让我们了解您的输入

    谢谢!

1 个答案:

答案 0 :(得分:1)

功能无意长时间运行。如果您有许多租户和/或报告生成缓慢,则可以终止函数调用(默认情况下为5分钟后)。

如果您需要通过计时器运行较长的作业,则Web作业可以更好地匹配。

如果我要使用函数,我会略微区别:

  1. 定时器触发函数每天运行(或无论频率如何),并将每个租户发送一条消息发送到队列,说“请为租户X生成报告”。它运行得非常快。

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

  3. 通过这种方式,您可以更均匀地分配工作,还可以隔离可能的故障,并可能并行生成多个报告。

    您可能还想查看可以实现类似工作流程的Durable Functions:生成单个报告的活动功能,以及为每个租户调用它的协调器功能。