Ответ 1
Если вы не используете какие-либо атрибуты ввода/вывода из SDK WebJobs (QueueTrigger, Blob, Table и т.д.), вы должны украсить задание с помощью атрибута NoAutomaticTrigger
, который будет распознан SDK.
Я новичок в Azure WebJobs, я запустил образец, где пользователь загружает изображение в хранилище blob и вставляет запись в очередь, затем задание извлекает это из очереди в качестве сигнала, чтобы сделать что-то вроде изменения размера загруженное изображение. В основном в коде задание использует атрибут QueueTrigger
для общедоступного статического метода для выполнения всего этого.
Теперь мне нужна работа, которая просто делает что-то вроде вставки записи в таблицу базы данных каждый час, она не имеет никакого типа триггера, она просто запускается сама. Как это сделать?
Я пытался иметь статический метод, и в нем я вставляю db, работа начиналась, но я получил сообщение о том, что:
Не найдено никаких функций. Попробуйте сделать классы вакансий общедоступными и общедоступными способами статичным.
Что мне не хватает?
Edit После ответа Виктора я попробовал следующее:
static void Main()
{
JobHost host = new JobHost();
host.Call(typeof(Program).GetMethod("ManualTrigger"));
}
[NoAutomaticTrigger]
public static void ManualTrigger()
{
// insert records to db
}
но на этот раз я получил InvalidOperationException
,
'Void ManualTrigger()' не может быть вызван из Azure WebJobs SDK. Не хватает ли атрибутов SDK Azure WebJobs?
Если вы не используете какие-либо атрибуты ввода/вывода из SDK WebJobs (QueueTrigger, Blob, Table и т.д.), вы должны украсить задание с помощью атрибута NoAutomaticTrigger
, который будет распознан SDK.
Вы можете использовать новейший SDK WebJobs, который поддерживает запуск функций задания по расписанию на основе того же формата выражения CRON. Вы можете использовать его для планирования работы каждый час:
[Disable("DisableMyTimerJob")]
public static void TimerJob([TimerTrigger("00:01:00")] TimerInfo timerInfo, TextWriter log)
{
log.WriteLine("Scheduled job fired!");
}
Кроме того, SDK WebJobs также имеет атрибут DisableAttribute, который можно применять к функциям, что позволяет включать/отключать функции на основе параметров приложения. Если вы измените настройку приложения на портале управления Azure, задание будет перезапущено (https://azure.microsoft.com/en-us/blog/extensible-triggers-and-binders-with-azure-webjobs-sdk-1-1-0-alpha1/).