【问题标题】:Not receiving messages via azure service bus queue未通过 Azure 服务总线队列接收消息
【发布时间】:2018-05-17 17:30:30
【问题描述】:

我有一个 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 的示例,结果相似。

【问题讨论】:

    标签: node.js azure azureservicebus


    【解决方案1】:

    刘海放在桌子上>看看这篇帖子delays using python中的线索。罪魁祸首是默认开启的队列分区。关掉它,瞧……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2017-04-16
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多