繁体   English   中英

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

[英]Not receiving messages via azure service bus queue

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

  • 如果我在新的term窗口中启动了node.js应用,并且在Q中已经有一条消息,那么它将在第一次调用时收到
  • 保持node.js应用运行,在1分钟后将收到发布到Q的下一条消息
  • 永远不会收到停止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示例具有相似的结果。

< 桌上的刘海 >看这篇文章中使用python延迟的线索。 罪魁祸首是默认情况下启用的队列分区。 关闭它,瞧...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM