我想在我的http函数中创建一个手动定时器触发器。 例如, 当我的函数获得http请求时,我想手动创建一个计时器触发器,以便在30分钟后触发另一个函数。
有谁知道如何在Azure功能中完成?
答案 0 :(得分:2)
正如我在前面的评论中提到的那样,如果可能的话,你可以插入一条消息,并在http函数获取请求时指定initialVisibilityDelay延迟30分钟,然后你可以使用队列触发函数来处理队列消息并执行一些任务。
如果您在Azure门户上创建Azure功能,则可以reference Microsoft.WindowsAzure.Storage
并使用以下代码在http触发器功能中添加消息。
参考程序集和导入名称空间
#r "Microsoft.WindowsAzure.Storage"
using System.Net;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;
添加消息并指定initialVisibilityDelay
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("{storage_connection_string}");
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("mymes");
queue.CreateIfNotExists();
CloudQueueMessage message = new CloudQueueMessage("{message_body}");
queue.AddMessage(message, initialVisibilityDelay: TimeSpan.FromMinutes(30));
此外,您可以create a function triggered by Azure Queue storage处理您的队列消息。
答案 1 :(得分:1)
这是Programmatically Schedule one-time execution of Azure function
的副本通过队列触发器完成您的实际工作,然后您可以使用延迟可见性对消息进行排队:
CloudQueue queueOutput; // same queue as trigger listens on
var strjson = JsonConvert.SerializeObject(message); // message is your payload
var cloudMsg = new CloudQueueMessage(strjson);
var delay = TimeSpan.FromHours(1);
queueOutput.AddMessage(cloudMsg, initialVisibilityDelay: delay);