一个计时器触发器类中的多个 Azure 函数

Sar*_*rah 4 azure azure-functions

我们必须编写多个触发器。我希望根据触发器类型创建单独的函数。因此,如果我需要 5 个将在不同时间运行的计时器触发器,我将创建一个计时器触发器函数类并将这些函数命名为[TimerTrigger1], [TimerTrigger2], [TimerTrigger3]... 等。添加代码后,我不确定是否可以再这样做。

有人可以建议我如何添加多个触发器吗?我不能Run在一个班级下有两个功能。

public static class TimerTrigger
{
    [FunctionName("InsertTimerTrigger1")]
    public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
    {
         // Do task 1
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }

    [FunctionName("InsertTimerTrigger2")]
    public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
    {
        //Do Task 2
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }
}
Run Code Online (Sandbox Code Playgroud)

Pan*_*wat 7

您可以在单个类中创建多个函数。您可以更改Run方法名称。

public static class Function1
{
    [FunctionName("Function1")]
    public static void Method1([TimerTrigger("0 */2 * * * *")]TimerInfo myTimer, TraceWriter log)
    {
        log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
    }

    [FunctionName("Function2")]
    public static void Method2([TimerTrigger("0 */3 * * * *")]TimerInfo myTimer, TraceWriter log)
    {
        log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
    }
}
Run Code Online (Sandbox Code Playgroud)

但我会建议,创建多个函数会帮助你(在你的情况下是 5 个)。

  1. 如果您使用的是通用业务逻辑,则可以放入一个通用类并注入所有功能。
  2. 您可以从 FunctionApp 实例中独立启用/禁用/删除功能。

在此处输入图片说明

  1. 您可以独立监控每个功能(从功能监控部分)

在此处输入图片说明


Tur*_*rbo 5

您可以为方法选择任何名称。(将其命名为“运行”不是必需的。)

public static class TimerTrigger
{
    [FunctionName("InsertTimerTrigger1")]
    public static void InsertTimerTrigger1([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
    {
         // Do task 1
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }

    [FunctionName("InsertTimerTrigger2")]
    public static void InsertTimerTrigger2([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
    {
        //Do Task 2
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }
}
Run Code Online (Sandbox Code Playgroud)