Spring Boot-app mit Eureka DiscoveryClient nicht starten
Ich bin versucht, zu schreiben eine einfache Spring-Boot-Anwendung, können (1) registrieren Sie sich mit einem Netflix-Eureka-server, und (2) Abfrage der Eureka-server zum abrufen von details von anderen registrierten services.
Meine client-Klasse @Autowired
Feld vom Typ com.netflix.discovery.DiscoveryClient
verwendet wird, zu sprechen, zu Eureka und Abfrage ist es, zu lernen, über andere Dienste. Auf meiner main-Klasse, ich habe die Anmerkung @EnableDiscoveryClient
:
@SpringBootApplication
@EnableDiscoveryClient
public class AppBootstrap {
public static void main(String[] args) {
SpringApplication.run(AppBootstrap.class, args);
}
}
In meinem application.yml
Datei unter src/main/resources die ich habe:
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
Wenn ich meine app den Dienst nicht starten, wirft eine exception, ist verwurzelt in:
Verursacht durch: java.lang.AbstractMethodError: org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean.getInstanceI
d()Ljava/lang/String;
bei com.netflix.appinfo.die Anbieter.EurekaConfigBasedInstanceInfoProvider.bekommen(EurekaConfigBasedInstanceInfoProvider
.java:53)
bei com.netflix.appinfo.ApplicationInfoManager.initComponent(ApplicationInfoManager.java:90)
... 25 mehr
Ich habe keine Ahnung, was hier Los ist. Irgendwelche Ideen? Ich glaube, sollte die app noch starten, auch wenn meine Eureka config falsch ist, aber es fällt beim start.
Zweitens, bin ich mit dem richtigen DiscoveryClient? Im Idealfall würde ich mag, um es allgemein so, dass ich verwenden könnte, es mit Eureka, Konsul oder Tierpfleger als Beispiele. Ich finde die Dokumentation ist nicht so toll bei illucidating genau das, was erforderlich ist, wenn diese Feder Cloud /Netflix Entdeckung Komponenten.
- Sie verwenden eine version von
eureka-client
inkompatibel ist mit Spring Cloud Netflix. Vermeiden Sie Probleme wie diese sollten Sie nutzen Spring Cloud ' s dependency management. - Ich habe nicht viel Erfahrung mit Spring Cloud dependency management. ..kannst du mir ein Beispiel nennen?
- Es hängt davon ab, ob man mit Maven oder Gradle. Versuchen Sie eine Suche für
bom
im Dokumentation.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
dann können Sie die Liste der Instanzen mit discoveryClient.getInstances
Wenn Sie mit anderen Komponenten wie RestTemplate, Band, etc, Sie müssen nur auf den Namen des Dienstes (der name der Flagge eureka) in der URL
Sehen Sie hier mehr
https://spring.io/blog/2015/01/20/microservice-registration-and-discovery-with-spring-cloud-and-netflix-s-eureka
Erhielt ich die autowiring Fehler in meiner Erfahrung, wenn ich mit discoveryclient, um die Informationen in der Klasse außerhalb der Funktion. Also ich war mit eureka, um herauszufinden, den port für meinen Dienst als port wurde beschrieben als 0 also service war die Abholung port dynamisch beim Start als spring-boot-Anwendung. Ich brauchte, um zu wissen, die port-programmgesteuert . Im controller verwendete ich den code wie unten in falsche Weg
Sobald ich den port-code, der in der sayhello-Methode der Fehler ging Weg. Also der richtige Weg beim abrufen der port ist als unten