Azure WebJobs QueueTrigger未触发

Dom*_*rre 6 c# azure azure-storage azure-queues azure-webjobs

我试图找到我应该从Azure存储队列触发的Azure WebJobs QueueTrigger方法的错误.

我已经阅读了几个文档(如博客文章/ 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);
}
Run Code Online (Sandbox Code Playgroud)

此控制台应用程序在我的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);
Run Code Online (Sandbox Code Playgroud)

执行此代码,并将队列添加到我的存储帐户.但是他们并没有从WebJobs中"出列"或阅读.

Dom*_*rre 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

还找到了一种快速浏览我的队列的方法:https://azurestorageexplorer.codeplex.com/.

  • 很高兴你发布了这个答案.无法相信工作室中的代码模板将类默认为私有. (3认同)

Lor*_*sen 15

在我的例子中,我假设QueueTrigger指的是Service Bus Queues而不是Azure Queues,我实际上需要使用它ServiceBusTrigger.

  • 我有同样的问题.还看到ServiceBusTrigger在地方提到但属性永远不会解决,直到我添加了Microsoft.Azure.WebJobs.ServiceBus nuget包!谈论文档中不清楚. (4认同)