170 похожих чатов

Всем привет. Какая библиотека поможет решить такую задачу? - Приходит запрос

на формирование отчета. Клиенту сразу нужно отдать 200 и запомнить параметры, которые он прислал (сервер может перезагрузиться, так что это будет в БД. Сейчас в проекте в сервисах везде постгрес, поэтому ему приоритет.)
- далее эти параметры нужно взять и запустить долгосрочную задачу (например несколько минут). Если задача зафейлилась, то нужно поставить ей статус об этом. Если сервак потух когда задача выполнялась, то при повторном запуске нужно выполнять ее заново.
- задач может быть несколько, нужно выполнять их по очереди

Я так понимаю, мне нужен фоновый поток, который будет подниматься при старте сервера и смотреть на наличие задач в БД. Дальше будет выполнять их по очереди. В реквестах будут приходить еще задачи.

Мне достаточно будет понимать как этот фоновый поток запустить, как это сделать на ноде? Я если что Шарпист, с нодой пока на ВЫ.

13 ответов

4 просмотра

https://github.com/OptimalBits/bull . Очередь для выполнения заданий

Sergii- Автор вопроса

Она на редисе. Мне не хочется еще какую-то БД подключать для маленькой очереди. Если я по крону буду просыпаться каждую минуту, то через static переменную класса могу отметку ставить, что уже работа выполняется и чтобы из другого крона я видел это состояние?

В смысле как пример есть много других очередей и без редиса, но я только этой пользовался, поэтому названия не на слуху

Sergii- Автор вопроса

Понял, спасибо

А вот ещё достаточно известная https://github.com/bee-queue/bee-queue прям по описания самое оно

Просто мне кажется, редис использовать очень удобно. В нем то как раз и будут сохраняться недоаыполненные задания при рестарте сервера. И автоматически будут пытаться выполнится повторно в подобной ситуации

Sergii- Автор вопроса

У нас уже есть постгрес, поэтому буду писать в нее. Она тоже удобная и уже есть.

По хорошему такую задачу нужно выполнять через очередь, типа кафки, но достаточно будет реализовать поверх постгреса. Создаете пару таблиц в постгресе с зачами, параметрами для них и статусами, а потом в ноде в index.js делаете обычный setInterval и в функции выбираете из базы задачи с нужным вам статусом и делаете с этими задачами все что вам нужно, хоть все сразу выполняете, хоть по очереди, опираясь на параметры, ну в общем я думаю смысл понятен 😊

а вообще worker_threads вам в помощь))

Sergii- Автор вопроса

Вот это что-то интересное. Спасибо!

Типичная задача для месседж брокеров и воркеров

Sergii- Автор вопроса

Я сделал что хотел в 6 строк кода. А сколько инфраструктуры мне нужно поднять для месседж брокера и его воркеров? Если нужно будет масштабировать это дело (в чем я очень сомневаюсь) то конечно будет разговор о всем этом.

Рад за вас

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
17
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Ну значит тебе повезло, мы же про транк говорим оба?
Александр (Rouse_) Багель
11
https://habr.com/ru/companies/domclick/articles/500978/ Добрый день, подскажите, пожалуйста, насколько хорошая практика сделать вот такую структуру эксчейнджей и очередей для...
Sergey
5
Карта сайта