我试图找到我应该从Azure存储队列触发的Azure WebJobs QueueTrigger方法的错误。
我已经阅读了几个文档(如博客文章/ msdn文章)。但我还不清楚。
主要问题/被误解的方面:
Azure存储控制台应用App.config或Windows Azure配置(门户网站)的连接字符串的名称应该是什么。到目前为止,我在两个地方都设置了以下名称。
这是我的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网站上持续运行。
我可以访问它的&#34; debug&#34;我可以切换输出的页面,我看到它已经开始/正在运行。
我的代码添加队列(来自我的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);
执行此代码,并将队列添加到我的存储帐户。但是他们并没有得到#34; dequeue&#34;或者从WebJobs上阅读。
答案 0 :(得分:19)
嗯,WebJobs课必须公开。
using Microsoft.Azure.WebJobs;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Newtonsoft.Json;
using Proceed.Common;
using System;
using System.Configuration;
using System.IO;
public class WebJobsTask {
public 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);
}
}
还找到了一种快速浏览队列的方法:https://azurestorageexplorer.codeplex.com/。
答案 1 :(得分:14)
在我的情况下,我假设QueueTrigger指的是服务总线队列而不是 Azure队列,我实际上需要使用ServiceBusTrigger
。< / p>
答案 2 :(得分:0)
JobHostConfiguration.Queues.MaxPollingInterval
属性配置最大后退。AzureWebJobsStorage
和AzureWebJobsDashboard
这是获取更多资源的好地方:https://docs.microsoft.com/en-us/azure/app-service-web/websites-webjobs-resources