2017-09-27 66 views
-2

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

有谁知道我该如何在Azure函数中完成?

+2

您不需要创建定时器触发器函数,您可以尝试发送队列消息,并在您的http函数获取请求时用30分钟的延迟指定initialVisibilityDelay,然后您可以使用队列触发器函数处理队列消息。 –

+0

约[initialVisibilityDelay]详细信息(https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.queue.cloudqueue.addmessage?redirectedfrom=MSDN&view=azurestorage-8.1.3#Microsoft_WindowsAzure_Storage_Queue_CloudQueue_AddMessage_Microsoft_WindowsAzure_Storage_Queue_CloudQueueMessage_System_Nullable_System_TimeSpan__System_Nullable_System_TimeSpan__Microsoft_WindowsAzure_Storage_Queue_QueueRequestOptions_Microsoft_WindowsAzure_Storage_OperationContext_) –

回答

0

这是Programmatically Schedule one-time execution of Azure function

一个DUP有你的实际工作中通过队列触发完成,然后就可以通过延期可见排队的消息:

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); 
1

正如我在我的评论前面提到的,如果可能的话,您可以插入一条消息,并在您的http函数获取请求时延迟30分钟指定initialVisibilityDelay,然后您可以使用队列触发器函数处理队列消息并执行一些任务。

如果您在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处理您的队列中的消息。