2017-09-27 51 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處理您的隊列中的消息。