Вызывая простую рабочую роль
Я пытаюсь получить некоторое понимание и опыт создания фоновых процессов в Azure.
Я создал простое консольное приложение и преобразовал его в рабочую роль Azure. Как мне это вызвать? Я пытался использовать Azure Scheduler, но похоже, что планировщик может вызывать рабочую роль только через очереди сообщений или HTTP/HTTPS.
Я никогда не думал о каком-либо типе коммуникации, поскольку моя идея состояла в том, чтобы создать фоновый процесс, который на самом деле не взаимодействует ни с каким другим приложением. Нужно ли преобразовывать рабочую роль в веб-роль и вызывать ее с помощью планировщика Azure с использованием HTTP/HTTPS?
1 ответ
Рабочая роль имеет три события:
- OnStart
- OnRun
- OnStop
public class WorkerRole : RoleEntryPoint { ManualResetEvent CompletedEvent = new ManualResetEvent(false); public override void Run() { //Your background processing code CompletedEvent.WaitOne(); } public override bool OnStart() { return base.OnStart(); } public override void OnStop() { CompletedEvent.Set(); base.OnStop(); } }
В тот момент, когда вы запускаете / отлаживаете консоль, преобразованную рабочую роль. Первые два (OnStart и OnRun) запускаются последовательно. Теперь в OnRun вы должны поддерживать поток живым, используя цикл while или ManualResetEvent
это где ваш код фоновой обработки будет жить.
OnStop срабатывает, когда вы освобождаете поток из OnRun или происходит что-то непредвиденное. Это место для утилизации ваших предметов. Закрытие файла-дескриптор соединения с базой данных и т. Д.