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

时间:2015-09-23 02:53:41

标签: node.js azure azure-webjobs

我创建了一个用节点编写的webjob。我想知道是否有办法在有消息进入队列时触发此webjob运行?

由于

2 个答案:

答案 0 :(得分:4)

请查看我们正在为这个问题制定解决方案的azure-webjobs-sdk-script回购。

repo是新的,因此doc和help仍然在线,但您可以克隆它并运行 Host.Node 示例项目,该项目演示了各种Node.js触发的函数,包括{{3这个库已经过测试,已部署到Azure并可以运行。

请在回购的问题列表中记录任何问题/反馈,我们将解决这些问题:)

答案 1 :(得分:3)

请看Mathew的帖子,了解我们正在使用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上的JSDoc,以了解如何执行抓取多条消息并增加"阻止"时间默认为30秒。

如果您有任何其他问题,请与我们联系。