Как грамотно спроектировать формат сообщений между микросервисами?
Практикуюсь в разработке проектов на микросервисах. Все они написаны на nodejs, у каждого есть свое API. Они ничего не знают друг о друге, все имеют одинаковую реализацию AMQP протокола, подключены к RabbitMQ серверу. Предполагается, что обмениваться информацией они могут посредством лишь этого протокола. В системе в целом существует несколько сущностей, которые так или иначе, частями присутствуют на нескольких микросервисах сразу (пользователи, денежная система, некоторая другая бизнес-логика). Каждый микросервис подписан на интересующую его сущность, на exchange с именем сущности, напр. "user". Туда отправляет/принимает сообщения, к примеру, в микросервисе аккаунта поменялся пароль - отправляет эту информацию в соответствующий канал, микросервис авторизации считает, что ему эта информация интересна, и меняет пароль пользователя на своей стороне. Вопрос: каким должен быть формат этих сообщений, структура, данные? По какому принципу создают коммуникации между микросервисами посредством RabbitMQ, где можно почитать примеры (не смог нигде найти)?
Судя по вашему сообщению, подготовительную работу вы сделали (т.е. микросервисы слушают определенные очереди в RabbitMQ).
Насчет формата данных - отправляйте в очередь сообщения в JSON-формате. Парсеры для него есть для любого языка. А вот что именно отправлять - так это уже зависит от того, что делает тот или иной микросервис. У каждого должен быть описан и задокументирован формат данных, набор полей и т.д. И уже другой микросервис (например, авторизация), который подписан на события из микросервиса аккаунтов должен понимать откуда он получил данные и правильно их обрабатывать.
В официальной документации описывается просто механизм работы. Меня же интересует формат передаваемых сообщений. Используются ли какие-нибудь токены при передачи, вообще что я должен передать другому сервису.