我正在尝试找到在 Azure 函数中拥有单个持久变量的最直接方法。用例如下:
1) 检查网站上的数字(例如 76);
2) 如果数字大于当前数字(例如 72),则针对每个新数字(例如 73、74、75、76)向用户发送电子邮件;
3)每小时运行一次以上。
函数运行后保存新号码的最佳方法是什么?
谢谢,我感谢您对最佳实践的任何想法。
兆瓦
我正在尝试找到在 Azure 函数中拥有单个持久变量的最直接方法。用例如下:
1) 检查网站上的数字(例如 76);
2) 如果数字大于当前数字(例如 72),则针对每个新数字(例如 73、74、75、76)向用户发送电子邮件;
3)每小时运行一次以上。
函数运行后保存新号码的最佳方法是什么?
谢谢,我感谢您对最佳实践的任何想法。
兆瓦
您可以使用队列存储来实现它,将变量 num 设置为队列(例如 72),在函数中检索它并将其与您发送的数字进行比较(我使用 HTTP 触发器进行测试)。将队列(72)出列并添加一条具有最大值的新消息。下面是我的测试代码。
[FunctionName("Function1")]
[return: Queue("number")]
public static async Task<string> RunAsync(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Environment.GetEnvironmentVariable("AzureWebJobsStorage"));
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("number");
// Async dequeue the message
CloudQueueMessage retrievedMessage = await queue.GetMessageAsync();
await queue.DeleteMessageAsync(retrievedMessage);
int numval = Convert.ToInt32(retrievedMessage.AsString);
int num = Convert.ToInt32(req.Query["num"]);
num = Math.Max(num, numval);
return num.ToString();
}