Azure Функция и постоянный процесс - PullRequest
1 голос
/ 31 марта 2020

Мне нужно обновить данные с внешнего ресурса и делать это как можно чаще.

Я создал Azure Функция с 1-минутным таймером и помечен как 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}");
    }

но, мне кажется, создается очередь с ожидающими экземплярами, так что это нехорошо.

Другой способ - добавить очередь одним сообщением, например семафором, и получить сообщение в начале, добавить сообщение в конце. функции:

    [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
        )
    {

но это решение fr agile, если что-то не так, сообщение не добавляется в очередь и процесс останавливается.

Какое решение является лучшим?

1 Ответ

2 голосов
/ 31 марта 2020

Azure Функции, которые запускаются через TimerTrigger, будут вызываться только один раз за интервал , даже если имеется несколько экземпляров. Так что вам не о чем беспокоиться. Это делается с использованием Blob Leases, и вы можете прочитать об этом здесь на вики-сайте webjob sdk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...