Весеннее облако со свободой

В настоящее время я запускаю приложение Spring Boot внутри Websphere Liberty и использую Consul для обнаружения служб. Для регистрации сервисов в Consul я создал функцию Liberty, которая подключается к событиям жизненного цикла приложения и выполняет регистрацию/отмену регистрации. Это прекрасно работает, но тем самым я связываю себя со Свободой. Spring-Cloud-Consul выглядит так, как будто он может решить эту проблему, но я не могу заставить его зарегистрировать службу в Liberty (он подключается к Consul) — только со встроенным сервером Tomcat. После просмотра кода Spring-Cloud-Consul проблема заключается в том, что EmbeddedServletContainerInitializedEvent не запускается, поэтому порт не устанавливается.

Мой вопрос: работает ли Spring Cloud Consul только со встроенными контейнерами сервлетов?


person J. Saiveau    schedule 11.08.2016    source источник


Ответы (2)


Это известная проблема. Не стесняйтесь представить PR. https://github.com/spring-cloud/spring-cloud-consul/issues/173

person spencergibb    schedule 11.08.2016
comment
Ах, спасибо за ответ. Приятно знать, что я был на правильном пути. - person J. Saiveau; 11.08.2016

Мое решение состояло в том, чтобы сделать класс Spring-cloud-consul ConsulLifecycle локальным и добавить ApplicationReadyEvent, например:

@Autowired(required = false)
private ServerProperties serverProperties;

@EventListener
public void onApplicationReady(ApplicationReadyEvent event) {
    this.setConfiguredPort(serverProperties.getPort());
    log.info("Application ready on port " + serverProperties.getPort());
    this.start();
}

Теперь мои сервисы регистрируются и отменяются, как и ожидалось.

person J. Saiveau    schedule 24.08.2016