Поддержание соединения Service Bus в течение жизненного цикла приложения - PullRequest
0 голосов
/ 06 марта 2019

Привет! Я использую новый nodejs SDK для подключения к сервисной шине. Как правильно получать сообщения, пока работает мое приложение? Пример кода показывает 2 способа прослушивания сообщений:

Способ 1 - получение партии

  const receiver = client.getReceiver();

  try {
    for (let i = 0; i < 10; i++) {
      const messages = await receiver.receiveBatch(1, 5);
      if (!messages.length) {
        console.log("No more messages to receive");
        break;
      }
      console.log(`Received message #${i}: ${messages[0].body}`);
      await messages[0].complete();
    }
    await client.close();
  } finally {
    await ns.close();
  }
}

Метод 2 - потоковый прослушиватель

  try {
    receiver.receive(onMessageHandler, onErrorHandler, { autoComplete: false });

    // Waiting long enough before closing the receiver to receive messages
    await delay(5000);

    await receiver.close();
    await client.close();
  } finally {
    await ns.close();
  }

Я использовал метод 2 при запуске и практически никогда не закрывал клиент. Но через некоторое время соединение просто перестает работать, и сообщения больше не принимаются (застряли в очереди).

Как правильно получать сообщения «навсегда»?

  • Восстановить нового клиента (открывать и закрывать, например, каждую минуту) методом 1, ИЛИ
  • Восстановить нового клиента (открывать и закрывать, например, каждую минуту) с помощью метода 2, ИЛИ
  • Какая-то система голосования (как)?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...