Das ist mein Setup:
Erster Dienst (FlightIntegrationApplication), der den zweiten Dienst (BaggageServiceApplication) über FeignClients API und Eureka aufruft.
Projekt auf GitHub: Ссылка
Erster Service:
%Vor%in einem der Controller:
%Vor%FlightIntegrationService:
%Vor%RegistryService:
%Vor%Und das ist der zweite Service (Gepäckservice):
BaggageServiceApplication:
%Vor%BaggageService:
%Vor%BaggageServiceImpl:
%Vor%Beim Aufruf des Restcontrollers des Flugintegrationsdienstes bekomme ich:
%Vor%Irgendeine Idee?
Danke, Strahl.
Ihr Code sieht für mich zurück.
Der Scheinclient für den Gepäckservice sollte im Flugdienst deklariert werden und der Gepäckservice sollte einen Controller haben, der auf die URL antwortet, die Sie in Ihrem Gepäckservice-Client zuordnen. Sie sollten nicht implementieren Schnittstelle mit @FeignClient
annotiert.
Das Setup, das Sie jetzt haben, wird keinen Controller auf / baggage / list / {flightId} im Gepäckservice haben und keinen Feign-Client im Flugdienst - der ganze Sinn von Feign ist es anzurufen Methoden auf einer Schnittstelle anstatt URLs manuell zu bearbeiten, kümmert sich Spring Cloud um die automatische Implementierung der Schnittstellenimplementierung und verwendet Eureka für die Erkennung.
Probieren Sie es aus (oder ändern Sie es so, dass es zu Ihrer echten App passt):
Flugdienst:
FlightIntegrationService.java:
%Vor%BaggageService.java:
%Vor%Gepäckservice:
BaggageController.java:
%Vor%Entfernen Sie BaggageService.java und BaggageServiceImpl.java vom Gepäckservice
registryService.getServiceUrl("baggage-service", ...
ersetzen durch
stelle sicher, dass der richtige Name
entsprichtEntfernen Sie den localhost-Teil
oder verwenden Sie nur den Ссылка -Teil
Es funktionierte nur für uns, wenn Sie nur den Namen des Dienstes in Eureka Dashboard aufgeführt haben, nicht beide
Tags und Links spring spring-boot spring-cloud netflix-eureka netflix-feign