Meine Client-Klasse verfügt über ein @Autowired-Feld vom Typ com.netflix.discovery.DiscoveryClient, das verwendet wird, um mit Eureka zu kommunizieren und es abzufragen, um mehr über andere Dienste zu erfahren. In meiner Hauptklasse habe ich die Annotation @EnableDiscoveryClient:
Code: Select all
@SpringBootApplication
@EnableDiscoveryClient
public class AppBootstrap {
public static void main(String[] args) {
SpringApplication.run(AppBootstrap.class, args);
}
}
Code: Select all
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
< strong>Verursacht durch: java.lang.AbstractMethodError: org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean.getInstanceI
d()Ljava/lang/String;
bei com.netflix.appinfo.providers.EurekaConfigBasedInstanceInfoProvider.get(EurekaConfigBasedInstanceInfoProvider
.java:53)
bei com.netflix.appinfo.ApplicationInfoManager.initComponent(ApplicationInfoManager.java:90)
... 25 weitere
Ich habe keine Ahnung, was hier los ist. Irgendwelche Ideen? Ich glaube, die App sollte auch dann noch starten, wenn meine Eureka-Konfiguration falsch ist, aber sie stürzt beim Start ab.
Zweitens: Verwende ich den richtigen DiscoveryClient? Idealerweise würde ich es gerne allgemein halten, sodass ich es mit Eureka, Consul oder ZooKeeper als Beispielen verwenden kann. Ich finde, dass die Dokumentation nicht besonders gut darin ist, genau zu erklären, was bei der Verwendung dieser Spring Cloud-/Netflix-Erkennungskomponenten erforderlich ist.