我試圖找到我正在做的錯誤應該從Azure存儲隊列觸發的Azure WebJobs QueueTrigger方法。Azure WebJobs隊列觸發器不觸發
我讀過幾篇文檔(如在博客文章/ msdn文章中)。但我還不清楚。
主要問題/誤解方面:
應該是什麼Azure存儲控制檯應用程序的App.config或Windows Azure的配置(門戶)連接字符串的名稱。到目前爲止,我在這兩個地方設置了以下名稱。
- AzureJobsStorage
- AzureWebJobsStorage
- AzureJobsRuntime
- AzureJobsDashboard
- AzureJobsData
這裏是我的WebJobs控制檯應用程序代碼。
static void Main()
{
JobHost host = new JobHost();
host.RunAndBlock();
}
public static void CreateLeague([QueueTrigger("temp")] string msg)
{
var task = JsonConvert.DeserializeObject<QueueTask>(msg);
if (task.TaskType == QueueTask.TaskTypes.Pdf)
RenderPdf(task.Id);
}
此控制檯應用程序在我的Azure網站上不斷運行。
我可以訪問其「調試」頁面,在那裏我可以切換輸出,我看到它開始/運行。
我的代碼中加入隊列(從我的ASP.NET MVC應用程序):
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("temp");
queue.CreateIfNotExists();
Common.QueueTask task = new Common.QueueTask();
task.TaskType = Common.QueueTask.TaskTypes.Pdf;
task.Id = p.Id;
CloudQueueMessage msg = new CloudQueueMessage(JsonConvert.SerializeObject(task) );
queue.AddMessage(msg);
這段代碼被執行,隊列被添加到我的存儲帳戶。但他們沒有得到「出列」或從WebJobs讀取。
很高興你發佈了這個答案。無法相信Studio中的代碼模板會將該類默認爲私有類。 – JasonCoder 2016-03-24 15:36:42