Подскажите, есть два микросервиса, микросервис А, который отвечает за создание, обновление, удаление сотрудника, и сервис Б, который делает тоже самое, только для создание зарплатной карточки.
В зарплатной карточке есть поле для id сотрудника, чтобы ее создать нужно чтобы сотрудник существовал.
Удачное ли решение на сервисе Б делать запрос с помощью RestTemplate на url который выдает сотрудника по id ? или это не особо удачный способ ? если так, то есть какой то другой, более подходящий способ ?
Добрый день.
Можно ли так сделать? Да, можно. Лучше, конечно использовать OpenFeign для этого, ибо он удобнее (код пишется в декларативном стиле)
Что можно еще сделать?
1) можно коммуникацию сделать через асинхронный вызов (Webclient || Reactive OpenFeign)
2) можно сделать коммуникацию через message brokers (RabbitMQ, Kafka, ActiveMQ). Как по мне более предпочтительный способ.
Ну и можно еще через grpc реализовать.
Мне понравился вариант с OpenFeign, но возник такой вопрос:
Вы написали, что более предпочтительный вариант это message brokers, но брокеры работают, как я понял, по принципу:
какое то действие -> отправка сообщения в брокер -> слушатель делает что то с полученным сообщением
То есть, в моем случаи, при создание работника помещать его в брокер, чтобы он сидел там и ждал когда там про него вспомнят, при создании карточки.
Или я как то не правильно понял как работает брокер сообщений ? если он работает так, как я описал, то не лучше использовать запрос через API и получать/не получать сотрудника через него ? или есть возможно брокер настроить так, чтобы микросервис с работниками отправлял сотрудника в брокер только при создании карточки ?