общаться через шину, взаимодействие через вызов методов в сложившейся ситуации без тотального рефакторинга или копипаста невозможен (идет зацикливание зависимостей). Проблема легко решается "разрывом" через события в шину, но тут есть следующая проблема - поднимать ради этого редис/кафку/иное - жесткий оверхед и потери времени. IRC черех process.send() / process.on('message') для формата "сам с собой" тоже недоступен. Есть ли какой-то вариант решения проблемы CORE-возможностями ноды (REST/WS и подобное тоже не самый подходящий вариант)?
Если общение будет в одном сервисе, может сделать один EE (https://nodejs.org/api/events.html#class-eventemitter) синглтоном и общаться через него?
👍 спасибо, надо попробовать
Тут вроде бы как просится ответ про EventEmitter, но не факт, что выбрав его, не будете потом жалеть. Для того, чтобы код с их использованием не превратился в помойку, надо выделять слои и писать конфиги. Делать всё то же самое, что делали бы, если бы потребовалось тянуть сторонний брокер Поэтому я бы предложил сразу тянуть сторонний брокер. Если накладные расходы очень страшат, не нужны фишки, которые дают кролик и Кафка (фишки у них разные), и не нужно масштабирование (в том плане, что есть гарантия, что посланные в одном процессе события точно должны быть пойманы в этом же процессе) - выбирайте zeromq или nanomsg (решение от того же автора, но более позднее, и когда я его использовал было более сырым)
ВременнЫе потери большие - до 300-400мс бывает, это много
Тут что-то не то. 300 мс потеря это очень много. При правильной настройке / использовании таких не должно быть
Я вот стараюсь не использовать вообще EventEmitter ибо не умею им пользоваться чтобы не было утечек памяти)
Обсуждают сегодня