Помогите разобратся с микросервисами
Хочу научится писать микросервисы java. Есть проект на котором хочу всё это организовать. Но проект не большой им пользуются человек 40. Сейчас это монолит. На страницах интернета нашёл что для таких небольших проектов как у меня делают не микросервисы, а микросервисный монолит. Разбил проект на микросервисы (всего 11). Один из которых занимается работой с Амосрм, а второй главный который создаёт некоторые записи в БД и анализирует их. Модули общаются между собой не Rest, а напрямую вызывают метод контроллера другого модуля. Так получается, что модуль амо должен взаимодействовать с главным модулем и наоборот. Как правильно в gradle подключить эти модули? и как в целом должны взаимодействовать модули в такой архитектуре? Иначе если я подключаю в главном модуле амо и наоборот, то выбрасывает ошибку:
Circular dependency between the following tasks:
:amocrm:compileJava
\--- :datadeal:compileJava
\--- :amocrm:compileJava (*)
dependencies { //datadeal
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation project(':amocrm')
}
dependencies { //amocrm
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation project(':datadeal')
}
Пример контроллера
@Controller
@AllArgsConstructor
public class OrderControllerImpl implements OrderController {
private final OrdersService ordersService;
@Override
public void sendOrder(Long id) {
ordersService.sendOrder(id);
}
}