不通过azure服务总线队列接收消息

时间:2018-05-08 00:27:24

标签: node.js azure azureservicebus

我有一个C#程序将消息发送到Azure服务总线Q(在VM上)。消息由node.js应用程序(在Mac上)接收。问题是接收。我看到的行为是:

  • 如果我在一个新的术语窗口中启动node.js应用程序并且Q中已有消息,则会在第一次调用时收到它
  • 保持node.js应用程序运行,发布到Q的下一条消息将在1分钟后收到
  • 停止node.js应用并在相同的术语窗口中重新启动它,并且永远不会收到向Q发送另一条消息

我知道C#程序在程序确认“发送”后立即正在​​我用服务总线资源管理器检查时正确发送消息。发送当前正在同步模式下完成。

Node.js程序:(运行最新的azure库和节点8.9.4)

logger.info("Connecting to service bus");
const sbService = azure.createServiceBusService(connectionString);
if (sbService != null) {
 sbService.createQueueIfNotExists(queueName, function (err) {
   if (err) {
     logger.error("Cannot connect to "+queueName+" :: "+ util.inspect(err, { depth: null }));
   } else {
      logger.info("Connected to Q :: processing begins ");
      var intervalID = setInterval(timerElapsed, 5000);
   }
 });
}

function timerElapsed() {
  sbService.receiveQueueMessage(queueName, { isPeekLock: false }, function (err, lockedMessage) {
      if (err) {
          if (err !== 'No messages to receive') {
            logger.error("receiveQueueMessage error states: "+ util.inspect(err, { depth: 2 }));
          } else {
            console.log('.');
          }
       } else {
         logger.info("received Message: "+ util.inspect(lockedMessage, { depth: 2 }));
       }
  });
}

[编辑] - 有趣的是,我在MS Github这里使用了github example的例子,结果相似。

1 个答案:

答案 0 :(得分:0)

< bangs on the table >看看这篇文章delays using python中的线索。罪魁祸首是队列分区,默认情况下处于启用状态。把它关掉,瞧... ...