可以使用 Azure Function App 执行多种功能吗?

Is it ok to use Azure Function App to perform multiple functionalities?

我已经使用 QueueTrigger 创建了一个 Azure 函数。在这里,我计划在通过 ASP.NET 核心 WebAPI 控制器对 Azure 队列进行输入时执行一些功能。

public void Run([QueueTrigger(QUEUE_NAME, Connection = "StorageConnectionString")] string queueMessage)
{
    _log.LogInformation($"Azure Function App call started...: {queueMessage}");
    
    // Connect to the database and fetch the data via Stored Procedure
    
    // Bind the data to Excel spreadsheet
    
    // Upload the spreadsheet to Azure Blob Storage and get the filename
    
    // Send a mail to the recepient including link to the filename
    
    _log.LogInformation($"Azure Function App call completed...: {queueMessage}");
}

我创建了一个单独的类库项目,其中包含上述 Azure Function App 所需的功能。我将对 classlibrary 项目的引用添加到 Azure Function App,并使用一项功能进行了验证以发送邮件。

我想知道在单个 Azure Function App 中完成函数列表是否是一种好的做法,或者是否有任何其他好的选择。

任何人都可以提供有关这种情况的指导吗?

我认为这不是一个好的做法,我认为函数应该保持简单和可重复,以防出现问题。您可以稍微扩展 Single-responsibility 原则,但在这种情况下,我认为您走得太远了。 想象一下,邮件服务器由于某种原因宕机,每次发送邮件都失败。您的函数将重新排队,并且必须获取数据、绑定 excel 并一遍又一遍地上传电子表格,只是为了在发送邮件时再次失败。有很多计算和存储丢失,可能是孤立的文件,即使您不考虑它也是如此。所以我至少会把它分成两部分,并在文件发布到 blob 存储时创建另一个触发器,并让另一个函数处理这种情况下的电子邮件发送。我的两分钱。