Я пытаюсь написать простое приложение Spring Boot, которое может (1) зарегистрироваться на сервере Netflix Eureka и (2) запросить сервер Eureka для получения сведений о других зарегистрированных сервисах ,Приложение Spring Boot с Eureka DiscoveryClient не запускается
В моем классе клиента есть поле @Autowired
типа com.netflix.discovery.DiscoveryClient
, которое используется для связи с Eureka и запрашивает его, чтобы узнать о других услугах. На моем главном классе у меня есть аннотацию @EnableDiscoveryClient
:
@SpringBootApplication
@EnableDiscoveryClient
public class AppBootstrap {
public static void main(String[] args) {
SpringApplication.run(AppBootstrap.class, args);
}
}
В моем application.yml
файл под SRC/основные/ресурсы у меня есть:
eureka:
instance:
lease-renewal-interval-in-seconds: 10
lease-expiration-duration-in-seconds: 20
prefer-ip-address: true
secure-port: 443
non-secure-port: 80
metadata-map:
instanceId: my-test-instance
client:
service-url:
defaultZone: http://localhost:9080/eureka/
registry-fetch-interval-seconds: 6
instance-info-replication-interval-seconds: 6
register-with-eureka: true
fetch-registry: true
heartbeat-executor-thread-pool-size: 5
eureka-service-url-poll-interval-seconds: 10
Когда я начинаю мое приложение службы не загружается, бросая исключение, с корнем в:
Вызванный: java.lang.AbstractMethodError: org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean.getInstanceI г() Ljava/языки/строка; на com.netflix.appinfo.providers.EurekaConfigBasedInstanceInfoProvider.get (EurekaConfigBasedInstanceInfoProvider .java: 53) в com.netflix.appinfo.ApplicationInfoManager.initComponent (ApplicationInfoManager.java:90) ... более 25
Я понятия не имею, что здесь происходит. Есть идеи? Я считаю, что приложение все равно должно начаться, даже если конфигурация Eureka неверна, но она падает во время запуска.
Во-вторых, я использую правильный DiscoveryClient? В идеале я хотел бы сделать его общим, чтобы я мог использовать его с Eureka, Consul или ZooKeeper в качестве примеров. Я считаю, что документация не очень хороша для того, чтобы точно определить, что требуется при использовании этих компонентов обнаружения Spring Cloud/Netflix.
Вы используете версию 'eureka-client', которая несовместима с Spring Cloud Netflix. Чтобы избежать подобных проблем, вы должны использовать управление зависимостями Spring Cloud. –
У меня нет большого опыта в управлении зависимостями Spring Cloud. Не могли бы вы привести мне пример? – Boon
Это зависит от того, используете ли вы Maven или Gradle. Попробуйте найти 'bom' в [документации] (http://projects.spring.io/spring-cloud/docs/1.0.3/spring-cloud.html). –