Не получать сообщения через очередь служебной шины Azure - PullRequest
0 голосов
/ 08 мая 2018

У меня есть программа на C #, отправляющая сообщения на служебную шину Q Azure (на виртуальной машине). Сообщения должны приниматься приложением 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 }));
       }
  });
}

[EDIT] - Интересно, что здесь я использовал пример из MS Github пример github с похожими результатами.

1 Ответ

0 голосов
/ 08 мая 2018

<<strong> стучит головой по столу > Посмотрите на подсказки в этом посте задержки с использованием python . Виновником является разделение очереди, которое включено по умолчанию. Выключи, и вуаля ...

...