如何在Azure Functions的http函数中创建手动计时器触发器

时间:2017-09-27 08:46:56

标签: function azure azure-functions

我想在我的http函数中创建一个手动定时器触发器。 例如, 当我的函数获得http请求时,我想手动创建一个计时器触发器,以便在30分钟后触发另一个函数。

有谁知道如何在Azure功能中完成?

2 个答案:

答案 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);