@Narts

Как организовать общение двух nodejs приложений?

Есть два nodejs приложения - апи для фронта и бек для чат-бота. Оба сервиса подключены к одной бд и нужно как-то настроить между ними общение, чтобы, например, при добавлении нового поста (через апи) стартовала рассылка (через чат-бот).

На ум приходит с создание служебного http роута у чат-бота. Этот роут апи будет вызывать и чат-бот будет запускать рассылку. Но кажется, что это не самый оптимальный и лучший вариант.

Оба сервиса будут запущены в несколько потоков/в несколько инстансов, поэтому тут тоже не очень понимаю как это все сихнронизировать. Кто сталкивался с подобным кейсом поделитесь решением
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 3
smilingcheater
@smilingcheater
Через сервер очередей, RabbitMQ например.
Создать в нём 2 очереди, от АПИ к чатботу, и от чатбота к АПИ. В инстансах приложений слушать соответствующие очереди, и выполнять приходящие в них задачи. И отправлять сообщения во вторую очередь, когда надо передать второй части системы какое-то задание.
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
На ум приходит с создание служебного http роута у чат-бота. Этот роут апи будет вызывать и чат-бот будет запускать рассылку. Но кажется, что это не самый оптимальный и лучший вариант.

Это вполне хорошее и скорее всего оптимальное решение. По сути у вас будет простой и прямой контракт для связи между вашими сервисами. Сервера очередей, или всякие паб-сабы - это конечно тоже вариант, но более сложный в поддержке, к нему стоит обращаться когда есть прям существенная причина.
Ответ написан
Комментировать
anatoly_kulikov
@anatoly_kulikov
Помог ответ? Отметь решением!
Очереди сложнее и дольше в реализации, но более правильный, пожалуй. Потому что если у вас будет много сообщений-получателей, то оно однажды просто уронит всю систему, и есть ненулевая вероятность потерять часть данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы