Задать вопрос
impeee
@impeee
nodejs/erlang developer

Как грамотно спроектировать формат сообщений между микросервисами?

Практикуюсь в разработке проектов на микросервисах. Все они написаны на nodejs, у каждого есть свое API. Они ничего не знают друг о друге, все имеют одинаковую реализацию AMQP протокола, подключены к RabbitMQ серверу. Предполагается, что обмениваться информацией они могут посредством лишь этого протокола. В системе в целом существует несколько сущностей, которые так или иначе, частями присутствуют на нескольких микросервисах сразу (пользователи, денежная система, некоторая другая бизнес-логика). Каждый микросервис подписан на интересующую его сущность, на exchange с именем сущности, напр. "user". Туда отправляет/принимает сообщения, к примеру, в микросервисе аккаунта поменялся пароль - отправляет эту информацию в соответствующий канал, микросервис авторизации считает, что ему эта информация интересна, и меняет пароль пользователя на своей стороне. Вопрос: каким должен быть формат этих сообщений, структура, данные? По какому принципу создают коммуникации между микросервисами посредством RabbitMQ, где можно почитать примеры (не смог нигде найти)?
  • Вопрос задан
  • 1504 просмотра
Подписаться 4 Оценить 2 комментария
Решения вопроса 1
@Vdm17
PHP Developer
Судя по вашему сообщению, подготовительную работу вы сделали (т.е. микросервисы слушают определенные очереди в RabbitMQ).
Насчет формата данных - отправляйте в очередь сообщения в JSON-формате. Парсеры для него есть для любого языка. А вот что именно отправлять - так это уже зависит от того, что делает тот или иной микросервис. У каждого должен быть описан и задокументирован формат данных, набор полей и т.д. И уже другой микросервис (например, авторизация), который подписан на события из микросервиса аккаунтов должен понимать откуда он получил данные и правильно их обрабатывать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
дык на самом раббит полно примеров

https://www.rabbitmq.com/getstarted.html

для транзакций - https://www.rabbitmq.com/confirms.html
Ответ написан
@rare
Накидал для вас пример. Посмотрите тут.
Может будет полезным.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы