首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure WebJobs QueueTrigger未触发

Azure WebJobs QueueTrigger未触发
EN

Stack Overflow用户
提问于 2014-10-16 15:54:59
回答 3查看 7.2K关注 0票数 6

对于应该从Azure存储队列触发的Azure WebJobs QueueTrigger方法,我试图找出自己做错了什么。

我读过一些文档(如博客文章/ msdn文章)。但我还是不清楚。

主要问题/误解方面:

用于Azure存储控制台应用程序App.config或Windows配置(门户)的连接字符串的名称。到目前为止,我在两个地方都设置了以下名称.

  • AzureJobsStorage
  • AzureWebJobsStorage
  • AzureJobsRuntime
  • AzureJobsDashboard
  • AzureJobsData

这是我的WebJobs控制台应用程序代码。

代码语言:javascript
复制
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应用程序):

代码语言:javascript
复制
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。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-16 17:55:12

嗯,WebJobs课程必须是公开的。

代码语言:javascript
复制
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/

票数 18
EN

Stack Overflow用户

发布于 2015-06-05 22:22:10

在我的例子中,我假设QueueTrigger指的是服务总线队列,而不是Azure ,实际上我需要使用ServiceBusTrigger

票数 15
EN

Stack Overflow用户

发布于 2014-10-16 19:32:13

  1. 您可以使用VS中的服务器资源管理器来探索存储队列的内容。
  2. 如果没有工作可做,WebJobs SDK的队列触发器将呈指数级后退。在消息被放入队列的那一刻和接收消息的那一刻之间,可能会有延迟。可以通过JobHostConfiguration.Queues.MaxPollingInterval属性配置最大回退。
  3. 对于最新的SDK,需要两个存储连接字符串AzureWebJobsStorageAzureWebJobsDashboard

这是一个提供更多资源的好地方:https://learn.microsoft.com/en-us/azure/app-service-web/websites-webjobs-resources

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26408804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档