Я использую webjob на Azure, запускающий очередь Azure. Отлично работает.Azure WorkerRole триггер в очереди, как WebJob
static void Main(string[] args)
{
JobHost host = new JobHost();
host.RunAndBlock();
}
public static void ProcessQueueMessage([QueueTrigger("logqueue")] string logMessage, TextWriter logger)
{
logger.WriteLine(logMessage);
}
Что действительно хорошо с queueTrigger это пока процесс инициируется сообщением не IsNot сделано, сообщение держать невидимым (не удалять). Поэтому, если вы отключите webjob (например, для обновления webjob) Сообщение будет видно (после небольшого таймаута) в очереди, чтобы быть обработанным обновленным webjob (отлично).
Теперь я хочу сделать то же самое, но на роль рабочего. Сегодня мне это нравится.
while (true)
{
var cloudMessage = await sourceImportationQueue.GetMessageAsync();
if (cloudMessage != null)
sourceImportationQueue.DeleteMessage(cloudMessage);
// process my job (few hours)
else
await Task.Delay(1000 * 5);
}
Но если я остановлю рабочего во время работы, я потерял сообщение. Так как я могу сделать, как запуск webJob?
Azure WebJobs SDK также работает в WorkerRole, поэтому вы можете использовать тот же код QueueTrigger. – mathewc