Обнаружение сбоя ссылки Azure ServiceBus от клиента NodeJS - PullRequest
1 голос
/ 27 сентября 2019

Я использую azure-sdk-for-js для подписки постоянно работающего процесса Node на подписку служебной шины.По какой-то причине при использовании registerMessageHandler он будет работать в течение недели, прежде чем произойдет сбой без вызова зарегистрированного обработчика ошибок.

Я не обнаружил никаких событий, которые вызываются из ServiceBusClient , SubscriptionClient или Receiver , которые отправляются при сбое подключения.Я могу обойти это, отслеживая, сколько раз вызывается processMessage, и убивая процесс, если он не был вызван недавно, но это похоже на неудачный взлом.Я также мог убивать контейнер каждые 6 дней, но это тоже плохое решение.Я также мог бы опросить свойство isClosed в Receiver, но я не понимаю, что вызывает закрытие ссылки.

Я не вижу зарегистрированных ошибок ни одного типа, registerMessageHandler просто перестает вызываться через неделю.Я ожидаю, что был бы какой-то обработчик событий, который я мог бы зарегистрировать на уровне Receiver, SubscriptionClient или ServiceBusClient, который сработал бы при закрытии ссылки.

this.azureServiceBusReceiver.registerMessageHandler(
  this.processMessage.bind(this),
  (err: any) => {
    // We should only retry retryable errors, otherwise exit the process as its not healthy
    if (!err.retryable) {
      logger.error({ err }, `Unretryable error, killing container.`);
      this.azureServiceBusReceiver.close().then(() => {
        process.exit(1);
      });
    }
    logger.error(
      { err },
      `Retryable error reading from Azure ServiceBus`
    );
  },
  { maxConcurrentCalls: MAXIMUM_CONCURRENCY }
);
...