【问题标题】:Multiple Azure Functions in one Timer trigger class一个 Timer 触发器类中的多个 Azure Functions
【发布时间】:2019-05-28 21:08:59
【问题描述】:

我们必须编写多个触发器。我希望根据触发器类型创建单独的函数。因此,如果我需要 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}");
    }
}

【问题讨论】:

    标签: azure azure-functions


    【解决方案1】:

    您可以在单个类中创建多个函数。您可以更改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}");
        }
    }
    

    但我会建议,创建多个函数会对您有所帮助(在您的情况下为 5 个)。

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

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

    【讨论】:

    • 谢谢@Pankaj,我对 FunctionApp 实例和 Function Monitor 部分有点困惑?你能举个例子吗?我正在 Visual Studio 2019 .net 核心项目中开发所有内容。
    • 另外,如何启用/禁用功能?
    • @Sarah 我从 Azure 门户添加了屏幕截图。部署函数应用程序后,您可以从门户中看到监控和启用/禁用选项卡。
    • 这真的很有帮助。我现在让我的函数基于一个类中的不同计时器运行。
    • @Sarah 如果这对您有帮助,请接受我的回答。
    【解决方案2】:

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

    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}");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 2018-10-26
      • 2017-10-29
      • 1970-01-01
      • 2023-03-13
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多