JSON-RPC goboilerplate
Рассмотрим пример внедрения json-rpc в наш бойлерплейт.
Репозиторий ты можешь найти по ссылке.
-
Конфигурация RPC сервера и клиента. Строки 207-209.
-
Конфигурация .env файла, добавлены новые ENV variables. Строки 48-55
Обрати внимание, что для взаимодействия сервиса в docker-compose нужно изменить localhost на имя контейнера. -
Инициализация сервиса User для сервера. Строки 169-174.
-
Инициализация сервера json-rpc.
Обрати внимание, что сервер json-rpc должен стартовать на строках 95-103.
Но поскольку клиент инициализируется раньше, старт сервера перенесен, так как клиент обращается к самому себе через встроенный сервер. Далее тебе нужно будет разделить сервер и клиент. -
Сам UserServiceJSONRPC является оберткой (wrapper) настоящего сервиса UserService находящийся в модуле User. Обрати внимание, что методы UserServiceJSONRPC обязательно должны быть с похожей сигнатурой (suitable methods).
-
Теперь auth обращается к пользователю через клиент json-rpc, имеющий интерфейс Userer. Для замены Userer в auth-сервис был добавлен временный метод setUserer в интерфейсе и SetUserer в имплементации, который мы не должны использовать в нормальной конфигурации. Используй метод dependency injection в конструкторе.
Примерная схема обращений выглядит так.