Azure 函数中非常简单的状态变量
Very simple state variable in Azure function
我正在尝试找到最直接的方法来在 Azure 函数中使用单个持久变量。使用案例如下:
1) 检查网站上的号码(例如 76);
2) 如果号码大于当前号码(例如 72),则针对每个新号码(例如 73、74、75、76)向用户发送电子邮件;
3) 运行 以上每小时一次。
函数运行后保存新号码的最佳方式是什么?
谢谢,我感谢您对最佳做法的任何想法。
兆瓦
你可以使用队列存储来实现它,将变量num设置为一个队列(例如72),在函数中检索它并将它与你发送的数字进行比较(我用HTTP触发器测试)。使 queue(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();
}
我正在尝试找到最直接的方法来在 Azure 函数中使用单个持久变量。使用案例如下:
1) 检查网站上的号码(例如 76);
2) 如果号码大于当前号码(例如 72),则针对每个新号码(例如 73、74、75、76)向用户发送电子邮件;
3) 运行 以上每小时一次。
函数运行后保存新号码的最佳方式是什么?
谢谢,我感谢您对最佳做法的任何想法。
兆瓦
你可以使用队列存储来实现它,将变量num设置为一个队列(例如72),在函数中检索它并将它与你发送的数字进行比较(我用HTTP触发器测试)。使 queue(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();
}