我用來在Azure上使用webjob觸發Azure隊列。它像一個魅力。像WebJob隊列Azure WorkerRole觸發器
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是,直到被一個消息觸發的過程狀態並沒有完成,該消息是保持不可見(不刪除)。所以,如果關閉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