У меня есть сервис "Браузер" который парсит страницу. Отправляешь ему url, он возвращает информацию о том что это за страница, title, description и тд.
Проблема в том что когда сервис падает. Другой микросервис продолжает слать ему задания и в момент когда перезапускается сервис Браузер. Тот получает кучу одинаковых заданий и намертво вешает систему.
Как организовать очередь внутри микросервиса, чтобы он стал одно поточным к примеру? И обрабатывал по 1 заданию, а остальные просто ложил в очередь.
сервис
const app = new MicroMQ({
name: serviceName, //browser - serviceName
rabbit: {
url: rabbitHost,
}
});
app.post('/tools/urls_info', async function (request, response) {
let { urls } = request.body;
let urls_info = [];
for(const url of urls){
let info = await browser(url);
urls_info.push(info)
}
response.json({result: true, array: urls_info});
});
app.start()
Вот так я отправляю данные сервису - браузер
let {responce} = await app.ask('browser', {
path: '/tools/urls_info',
method: 'post',
body: {
urls: urls_array
}
});