Azure功能和永久进程
我需要从外部资源更新数据,并应尽可能经常这样做 我创建了一个带有1分钟计时器的Azure函数,并将其标记为Azure功能和永久进程,azure,azure-functions,Azure,Azure Functions,我需要从外部资源更新数据,并应尽可能经常这样做 我创建了一个带有1分钟计时器的Azure函数,并将其标记为Singleton: [Singleton] [FunctionName("FunctionSync")] public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger log) { log.LogInformation($"C# Timer t
Singleton
:
[Singleton]
[FunctionName("FunctionSync")]
public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
但是,在我看来,它是由等待的实例创建的,所以这不好
另一种方法-使用一条消息(如信号量)添加队列,并在函数末尾的start add message上获取消息:
[Singleton]
[FunctionName("FunctionSync")]
public async Task Run(
[QueueTrigger("tablet-management-sync-last-datetime", Connection = "StorageConnectionString")]string myQueueItem,
[Queue("tablet-management-sync-last-datetime", Connection = "StorageConnectionString")]CloudQueue outputQueue,
ILogger log
)
{
但这种解决方案是脆弱的,若出现错误,消息不会添加到队列中,进程也会停止
哪种解决方案是最好的?即使存在多个实例,通过TimerTrigger触发的Azure函数也会。所以这是你不必担心的事情。它使用Blob租约来实现这一点,您可以在webjob sdk wiki上进行访问