Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   eventLoop node (https://javascript.ru/forum/node-js-io-js/85765-eventloop-node.html)

fxobject 19.02.2024 15:24

eventLoop node
 
Все добра!
Господа есть вот такая небольшая задача
имеем несколько очередей выполнения задач.
одни из задач - "неприоритетные" по кругу перебираются задания и выполняются. По мере выполнения идет переход к следующей задачи данной категории.
Но есть задачи, которые выполняются по мере поступления данных. Типа - "прерывания"
Их нужно выполнять максимально быстро, буквально бросать все и только после их выполнения опять переходить на перебор задач из очереди.
т.е. фактически необходим приоритет в eventLoop.
пока еще не вникал в материал, подскажите, кто сталкивался или знает - что либо подобное можно организовать с Node?
спасибо

Nexus 19.02.2024 16:06

А есть причина тому, что у вас все задачи в одной очереди и, судя по всему, одним консьюмером обрабатываются?
Может стоит просто сделать несколько очередей с консьюмером(ами) для каждой из них?

fxobject 19.02.2024 16:51

если можно чуть поподробней?
у вас в ответе очередь это поток или eventLoop? Если я не ошибаюсь eventLoop в потоке - один. т.е. предположу что предложение о создании нескольких потоков. Такое решение не совсем предпочтительно, потому как это приложение имеет канал общения с другим node приложением, от которого получает команды и передает отчеты своих действий.
А значит придется организовывать обмен данными между потоками. Не то, чтобы трудно, как бы подобное делал. Но хотелось бы не заморачиваться с этим. А вообще, конечно такое решение рабочее. Может на нем и остановлюсь. Прикинуть надо....

voraa 19.02.2024 18:49

Цитата:

Сообщение от fxobject
т.е. фактически необходим приоритет в eventLoop.

Ну вы же не eventLoop, который в node собираетесь использовать.
Наверняка свою очередь будете делать. Ну сделайте добавление обычных задач в конец очереди, а приоритетных в начало.

fxobject 19.02.2024 20:26

увы так не получится. те задачи, которые неспешно идут, я мог класть как хочу. А вот те, которые приходят и требуют быстрой обработки их "кладет" сам Node. т.е. происходит событие (в моем случае trap snmp), это значит что просто поступают данные UDP на порт. и обработка (алгоритмическая) я так понимаю ложится в конец очереди. и вытащится из нее только когда все медленные до этого помещенные будут извлечены. Ну на самом деле все будет быстрей (потому в "медленных" есть и sql и прочие дела, прерывающие работу задания и обращение к неблокируемому вводу/выводу) но тем не менее, посмотрел статистику обращений trap, взялся за голову. только отдельным потоком, да и еще придется очень много чего кэшировать. Всем спасибо за участие.


Часовой пояс GMT +3, время: 18:43.