我有一个用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
}
}
提前谢谢!