Всем привет, нужен совет.
Есть приложение.
Оно состоит из трех почти не зависимых блоков.
У него есть рестфулл: (контроллер (запросы, валидация) + сревис 1 (бизнес -логика);
У него есть App1 (двухсторонне соединение по сокету): контроллер(обрабатывает входящие события), эмиттер(отправляет события в шину) и сервис 2 (бизнес-логика).
Есть App2 (двухстороннее соединение по сокету): контроллер(обрабатывает входящие события), эмиттер(отправляет события в шину) и сервис 3 (бизнес-логика).
Проблема в чем - эти три блока приложения должны общаться друг с другом. Сейчас это реализовано так - сервис из первой части приложения может попросить отправить сообщение эмиттер второй части. И т.д. Это вносит страшный мес в работу. Дорабатывать и дебажить не удобно.
Есть желание сделать между ними внутреннюю шину событий и контроллеры к ней. Тогда вроде все должно стать прозрачным. Думаю как можно сделать. Что я вижу: 1) Можно сокеты провесить между ними. 2) можно вроде через эту библиотеку worker_threads запустить каждый блок как воркер и организовать общение через нее.
Какие есть еще варианты? Что стоит учитывать? Как выбирать?