Azure:队列中有消息时如何触发nodejs webjob?

Azure: how to trigger a nodejs webjob when there is a message in the queue?

我创建了一个用 node.js 编写的网络作业。我想知道是否有一种方法可以在有消息进入队列时触发此网络作业 运行?

谢谢

查看 Mathew 的 post,了解我们正在使用 SDK 开发的新功能。 https://github.com/Azure/azure-webjobs-sdk-script

尚未使用 WebJobs SDK。 您可以建立一个连续的工作并保持 fetching。如果你想构建一些有点理智的东西,你可能会做这样的事情:

var azure = require('azure-storage');
var queueService = azure.createQueueService(),
  queueName = 'taskqueue';

// Poll every 5 seconds to avoid consuming too many resources
setInterval(function() {
  queueService.getMessages(queueName, {}, function(error, serverMessages) {
    if (!error) {
      // For each message
      serverMessages.foreach(function(i) {
        // Do something
        console.log(i.messagetext);
        // Delete Message
        queueService.deleteMessage(queueName, i.messageid, i.popreceipt,
          function(error) {
            if (error) {
              console.log(error);
            }
          }); //end deleteMessage
      }); // end foreach
    } else {
      console.log(error);
    }
  });
}, 5000);

您需要查看他们在 azure.github.io 上的 JSDocs,以了解如何执行抓取多条消息和增加 "blocking" 时间(默认为 30 秒)等操作。

如果您有任何其他问题,请告诉我。

请查看 azure-webjobs-sdk-script 存储库,我们正在为这个问题开发解决方案。

repo 是新的,所以文档和帮助仍然在线,但你可以克隆它和 运行 Host.Node 演示的示例项目各种 Node.js 触发函数,包括 a queue triggered function :) 这个库已经过测试部署到 Azure 并且可以工作。

请在回购协议的问题列表中记录任何 issues/feedback,我们将解决它们:)