我用QueueTrigger创建了一个Azure函数。在这里,我计划在通过ASP向Azure队列添加条目时执行一些功能。. NET Core WebAPI Controller.
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功能应用程序所需的功能。我向Azure功能应用程序添加了对类库项目的引用,并对发送邮件的一个功能进行了验证。
我想知道这是一个很好的做法,以完成一个单一的Azure功能应用程序的功能列表,或者有任何其他好的选择。
关于这个场景,有人能提供他们的指导吗?
我不认为这是一个很好的做法,我认为函数应该保持简单和可重复,以防出现问题。你可以稍微扩展一下单一责任原则,但在这种情况下,我认为你做得太过分了。假设邮件服务器由于某种原因宕机,每次发送邮件都失败。你的函数将被重新请求,必须获取数据,绑定excel并一遍又一遍地上传电子表格,只是在发送邮件时再次失败。有大量的计算和存储丢失,可能孤立的文件,即使你没有解释它。因此,我至少将其分成两部分,并在文件发布到blob存储时创建另一个触发器,并让另一个函数处理本例中的电子邮件发送。我的两分钱。