eventLoop node
Все добра!
Господа есть вот такая небольшая задача имеем несколько очередей выполнения задач. одни из задач - "неприоритетные" по кругу перебираются задания и выполняются. По мере выполнения идет переход к следующей задачи данной категории. Но есть задачи, которые выполняются по мере поступления данных. Типа - "прерывания" Их нужно выполнять максимально быстро, буквально бросать все и только после их выполнения опять переходить на перебор задач из очереди. т.е. фактически необходим приоритет в eventLoop. пока еще не вникал в материал, подскажите, кто сталкивался или знает - что либо подобное можно организовать с Node? спасибо |
А есть причина тому, что у вас все задачи в одной очереди и, судя по всему, одним консьюмером обрабатываются?
Может стоит просто сделать несколько очередей с консьюмером(ами) для каждой из них? |
если можно чуть поподробней?
у вас в ответе очередь это поток или eventLoop? Если я не ошибаюсь eventLoop в потоке - один. т.е. предположу что предложение о создании нескольких потоков. Такое решение не совсем предпочтительно, потому как это приложение имеет канал общения с другим node приложением, от которого получает команды и передает отчеты своих действий. А значит придется организовывать обмен данными между потоками. Не то, чтобы трудно, как бы подобное делал. Но хотелось бы не заморачиваться с этим. А вообще, конечно такое решение рабочее. Может на нем и остановлюсь. Прикинуть надо.... |
Цитата:
Наверняка свою очередь будете делать. Ну сделайте добавление обычных задач в конец очереди, а приоритетных в начало. |
увы так не получится. те задачи, которые неспешно идут, я мог класть как хочу. А вот те, которые приходят и требуют быстрой обработки их "кладет" сам Node. т.е. происходит событие (в моем случае trap snmp), это значит что просто поступают данные UDP на порт. и обработка (алгоритмическая) я так понимаю ложится в конец очереди. и вытащится из нее только когда все медленные до этого помещенные будут извлечены. Ну на самом деле все будет быстрей (потому в "медленных" есть и sql и прочие дела, прерывающие работу задания и обращение к неблокируемому вводу/выводу) но тем не менее, посмотрел статистику обращений trap, взялся за голову. только отдельным потоком, да и еще придется очень много чего кэшировать. Всем спасибо за участие.
|
Часовой пояс GMT +3, время: 15:21. |