Как организовать порядок запуска микросервисов?
На текущем проекте ситуация следующая:
Есть два сервиса (ресурсов и пользователей), сервис пользователей зависит от запуска сервиса ресурсов, т.е. без него он падает при запуске. Могу я как-то проверять доступность в консуле сервиса ресурсов(т.е. он успешно поднялся и пингуется) перед запуском сервиса пользователей. По технологиям Spring Boot, Cloud, Consul, Gradle. Запускается всё одной командой gradle
task all(type: GradleBuild) {
group = "docker"
tasks = ['buildConsul', 'buildPostgres', 'buildImage', 'runConsul', 'runPostgres', 'runContainer']
Так же через раз работает такое решение (и по этому оно не подходит):
@Component
public class ResourceServiceListener {
@Autowired
private DiscoveryClient client;
@EventListener
public void listenResourceService(ContextStartedEvent event) throws InterruptedException {
while (true) {
Optional<ServiceInstance> instance = client.getInstances(ApplicationNames.RESOURCE_SERVICE).stream().findAny();
if (instance.isPresent())
break;
TimeUnit.MINUTES.sleep(5);
буду рад помощи, запускается всё в докере