Если вы решили, что для этого вам нужны 2 разные службы, я бы согласился, что циклическая зависимость является чем-то плохим и стоит попытаться ее удалить.
Однако я не вижу в этом необходимости. Я думаю, что услуга «купон» должна знать об услуге «продукт», но не наоборот.
Однако проблема, с которой вы столкнулись, заключается в том, что ваш купонный сервис должен реагировать на изменения, происходящие в сервисе продукта. Прямо сейчас вы решили эту проблему, отправив сообщение в службу купона.
Некоторые возможности исправить это включают:
- Служба купонов периодически запрашивает обновления.
- Развертывание системы pub-sub. Внесите «изменение продукта», на которое вы можете подписаться, и купон на него будет подписан.
Я бы предложил третий вариант. Мне кажется, что «смена купона» как концепция вообще не должна существовать в сервисе продукта. Почему это? Похоже, у вас на самом деле может быть 3 разных сервиса:
- Информация о продукте
- Информация о купоне
- Корзина