2014-09-30 4 views
13

Я новичок в Azure WebJobs. Я запустил образец, в котором пользователь загружает изображение в хранилище blob и вставляет запись в очередь, затем задание извлекает это из очереди в качестве сигнала, чтобы сделать что-то вроде изменения размера загруженное изображение. В основном в коде задание использует атрибут QueueTrigger для общедоступного статического метода, чтобы сделать все это.Azure WebJobs - функций не найдено - как мне сделать работу с триггером?

Теперь мне нужна работа, которая просто делает что-то вроде вставки записи в таблицу базы данных каждый час, она не имеет никакого типа триггера, она просто запускается сама. Как мне это сделать?

Я попытался иметь статический метод и в нем я делаю вставку к БД, работа действительно началась, но я получил сообщение не говоря:

функции не найдено. Попробуйте сделать классы вакансий общедоступными и методы общедоступными. static.

Что мне не хватает?

Редактировать После ответа Виктора я попытался следующие,

static void Main() 
{ 
    JobHost host = new JobHost(); 
    host.Call(typeof(Program).GetMethod("ManualTrigger")); 
} 

[NoAutomaticTrigger] 
public static void ManualTrigger() 
{ 
    // insert records to db 
} 

, но на этот раз я получил InvalidOperationException,

Пустота ManualTrigger() 'не может быть вызван из Azure WebJobs SDK. Не хватает ли атрибутов SDK Azure WebJobs?

ответ

13

Если вы не используете какие-либо ввода/вывода атрибутов из WebJobs SDK (QueueTrigger, Blob, таблицы и т.д.), вы должны украсить работу с NoAutomaticTrigger атрибутов, которые будут признаны SDK.

+0

Спасибо Victor за ваш ответ, я попробовал NoAutomaticTrigger и получил InvalidOperationException, я обновил свой вопрос с помощью кода, который у меня есть, не могли бы вы помочь мне понять, что я делаю неправильно. Большое спасибо! –

+3

Какую версию SDK вы используете? Является ли класс общедоступным? –

+3

А вы правы, я просто объявил «общедоступным» в «Программе классов», он работает, однако он показывает msg ниже в течение пары секунд, а затем консольное окно просто падает. Msg: «Найдена следующая функция: WebJob1.Program.ManualTrigger Выполнение:« Program.ManualTrigger », потому что это была функция waas, программно вызываемая через API-интерфейсы хоста». –

2

Вы можете использовать новейший SDK WebJobs, который поддерживает запуск функций задания по расписанию на основе того же формата выражения CRON. Вы можете использовать его, чтобы запланировать вашу работу каждый час:

[Disable("DisableMyTimerJob")] 
public static void TimerJob([TimerTrigger("00:01:00")] TimerInfo timerInfo, TextWriter log) 
{ 
    log.WriteLine("Scheduled job fired!"); 
} 

Кроме того, WebJobs SDK также имеет DisableAttribute, которые могут быть применены к функциям, что позволяет включить/отключить функции, основанные на параметрах приложения. Если вы измените настройку приложения на портале управления Azure, задание будет перезапущено (https://azure.microsoft.com/en-us/blog/extensible-triggers-and-binders-with-azure-webjobs-sdk-1-1-0-alpha1/).

 Смежные вопросы

  • Нет связанных вопросов^_^