javascript - Azure + Node Js Service 总线持久订阅主题

标签 javascript node.js azure iot

使用 Node js,我想为Azure服务总线服务主题创建持久订阅。现在它只执行一次。请指导我,我对此很陌生。提前致谢。我正在使用以下代码来订阅主题。

var azure = require('azure');

var azureConnection = "Endpoint=sb:My connection string"

var retryOperations = new azure.ExponentialRetryPolicyFilter();
var serviceBusService = azure.createServiceBusService(azureConnection).withFilter(retryOperations);

serviceBusService.receiveSubscriptionMessage('mytopic01', 'mytopicsub', function (error, receivedMessage) {

    if (!error) {
        // // // Message received and deleted
        console.log(receivedMessage);
    }
});

而且我不想使用 setInterval 函数。我想解决如果消息发布到主题它应该自动触发订阅的问题。

最佳答案

实际上,如果你的客户端应用程序是一个独立的node.js应用程序,我们通常会设置一个循环程序来循环接收来自服务总线的消息。 例如

var azure = require('azure');
var sbService = azure.createServiceBusService(<connection_string>);
function checkForMessages(sbService, queueName, callback) {
  sbService.receiveSubscriptionMessage(queueName, { isPeekLock: true }, function (err, lockedMessage) {
    if (err) {
      if (err === 'No messages to receive') {
        console.log('No messages');
      } else {
        callback(err);
      }
    } else {
      callback(null, lockedMessage);
    }
  });
}
function processMessage(sbService, err, lockedMsg) {
  if (err) {
    console.log('Error on Rx: ', err);
  } else {
    console.log('Rx: ', lockedMsg);
    sbService.deleteMessage(lockedMsg, function(err2) {
      if (err2) {
        console.log('Failed to delete message: ', err2);
      } else {
        console.log('Deleted message.');
      }
    })
  }
}
setInterval(checkForMessages.bind(null, sbService, queueName, processMessage.bind(null, sbService)), 5000);

类似场景的代码示例可以引用 GitHub由 Azure 团队提供。

如有任何进一步的疑问,请随时告诉我。

关于javascript - Azure + Node Js Service 总线持久订阅主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37874359/

相关文章:

javascript - ng-show 改变 div 中的最小高度

javascript - 如何使用正则表达式解析Javascript中某种格式的字符串?

javascript - where 子句上的意外标记 ' : '

azure - 如何计算服务器端脚本中使用的 Azure Cosmos DB RU

windows - 为什么 IIS 在 RoleEntryPoint.OnStart 返回之前接受请求?

c# - 顶级请求上的 ConfigureAwait(false)

javascript - 如何解决Mocha中的 "TypeError: Cannot read property ' equal' of undefined"

javascript - javascript中的圆形让我陷入困境

javascript - 请求的返回值

javascript - 在构造 Cheerio 抓取时遇到问题