Как организовать порядок запуска микросервисов?

На текущем проекте ситуация следующая:
Есть два сервиса (ресурсов и пользователей), сервис пользователей зависит от запуска сервиса ресурсов, т.е. без него он падает при запуске. Могу я как-то проверять доступность в консуле сервиса ресурсов(т.е. он успешно поднялся и пингуется) перед запуском сервиса пользователей. По технологиям 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);

буду рад помощи, запускается всё в докере


Ответы (0 шт):