Лазурная веб-работа; Запланированное выполнение также запускает по очереди

Я пытаюсь выяснить, можно ли сделать один веб-задание Azure и вести его по расписанию, скажем, раз в 1 минуту, а также позволить запускать его из очереди. Мне удалось выполнить оба требования раздельно, но не объединить их в одной работе.

Я знаю, что для того, чтобы они запускались в очереди, мне нужно использовать JobHost и класс Functions с методами, которые перехватывают триггер. Тем не менее это блокирует планировщик и обрабатывает только триггеры

Когда я опускаю JobHost... ну тогда график работает идеально. Я почти уверен, что спрашиваю о противоречии, и мне просто нужно сделать две отдельные работы, но, возможно, один из вас столкнулся с тем же и сможет его достичь.

1 ответ

Решение

Я не буду использовать Планировщик Azure / Запланированные задания здесь, так как вы уже используете SDK. Вы можете использовать новый TimerTrigger.

То, что я, вероятно, сделал бы, имеет две функции. Первая функция - это функция, использующая QueueTrigger а другой использует новый TimerTrigger WebJobs выпущен в версии 1.1.0. Вы можете увидеть пример, где я делаю нечто подобное здесь: https://github.com/christopheranderson/feedbackengine

Там у меня есть таймер, который опрашивает RSS-канал и удаляет сообщения очереди, но я также могу просто удалить сообщения очереди из другого приложения или, как я делал в моем сценарии, использовать WebHook.

Документы для запуска по таймеру: https://github.com/Azure/azure-webjobs-sdk-extensions

Образец:

// Triggers every minute (every time the clock looks like 00:xx:xx)
public static void CronJob([TimerTrigger("0 * * * * *")] TimerInfo timer, [Queue("Foo")] out string message)
{
    Console.WriteLine("Cron job fired!");
    message = "Hello world!";
}

public static void QueueJob([QueueTrigger("Foo")] string message)
{
    Console.WriteLine(message);
}
Другие вопросы по тегам