У меня есть микросервис, написанный на NodeJS, который принимает сообщения от RabbitMQ, и для типа сообщений "SessionStart" он выполняет рекурсивную функцию для выполнения длинных пулов GET-запросов. Таким образом, при запуске сеанса рекурсивная функция начинает повторять запросы GET, пока сеанс не будет активен. Каков наилучший способ обработки этого сценария в NodeJS для более параллельных сеансов, чтобы не блокировать цикл обработки событий и обрабатывать каждый запущенный сеанс, пока он не станет живым.
Простая схема моего решения представлена ниже:
channel.consume(message => {
if(message.type == "SessionStart") {
longPoolForSession(message.sessionId);
}
});
async function longPoolForSession(sessionId) {
try {
let response = await request(`http://.../${sessionId}`);
longPoolForSession(sessionId);
} catch (error)
// 404 Not Found - end of recursive calls
}
}
Заранее спасибо!