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

我需要从外部资源更新数据,并应尽可能经常这样做

我创建了一个带有1分钟计时器的Azure函数,并将其标记为
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上进行访问