1. Wenn Sie vorgegebene Serviceanrufe verwenden, verwenden Sie ererbte Methoden, um den Dienst aufzurufen. Beim Beitritt zur Herbstkonfiguration von Hystrix wird ein Fehler gemeldet und wurde behoben. 2. Verwenden Sie die vorstellende Standardkonfiguration, der Leistungsschalter wird nicht wirksam und wurde behoben.
Vor kurzem habe ich etwas über Microservices gelernt und festgestellt, dass ich bei der Verwendung von TEIGN zur Tätigkeitsanrufe die Vererbung zum Aufrufen des Dienstes verwendet habe. Beim Hinzufügen von Hystrix -Leistungsschalter -Verarbeitungs -Fallback -Konfiguration wird ein Fehler gemeldet. Der Code ist wie folgt:
@RequestMapping ("/Demo/api") öffentliche Schnittstelle HelloAPi {@getMapping ("Benutzer/{id}") Benutzer getUserById (@PathVariable ("id") Long ID); @GetMapping ("Hallo") String echo (@RequestParam ("Name") String -Name);} @FeignClient (value = "ms-server", Fallback = ConsumerFeignServiceFallback.class) Public Interface ConsumerFeignService erweitert HelloAPi {} @ComponentPublic Class ConsumerFegnServiceFallback implementiert ConsumerFeignService {@Override public Benutzer getUserById (Long ID) {return New User (); } @Override public String echo (String -Name) {return "echo error:" + name; }}Der Fehler wird wie folgt gemeldet:
Verursacht durch: java.lang.ilgelegalstateException: mehrdeutiges Mapping. "Com.thoughtworks.demo.consumer.Service.ConsumerFeignservice" -Methode kann nicht zugeordnet werden
Öffentliche Zusammenfassung Java.lang.String com.thoughtworks.demo.api.helloapi.echo (Java.lang.String)
zu {[/Demo/api/Hallo], Methods = [GET]}: Es gibt bereits die Bean -Methode "ConsumerFegnServiceFackback" bereits
Public Java.lang.String com.thoughtworks.demo.consumer.service.consumerFeignserviceFallback.Echo (Java.lang.String) Zugeordnet.
bei org.springframework.web.servlet.handler.abstractHandhermethodmapping $ mapingregistry
unter org.springframework.web.servlet.handler.abstractHandhermethodmapping $ mapingRegistry.register (AbstractHandlermethodmapping.java:540) ~ [Spring-Webmvc-4.3.14.Relase.jar: 4.3.14.Relelase]
bei org.springframework.web.servlet.handler.abstractHandhermethodmapping.registerHandlermethod (AbstractHandlermethodmapping.Java:264) ~ [Spring-Webmvc-4.3.Relase.jar: 4.3.14.Release]
bei org.springFramework.web.servlet.handler.abstractHandhermethodmapping.detectHandlermethods (AbstractHandlermethodmapping.java:250) ~ [Spring-Webmvc-4.14.Relase.jar: 4.3.14.Release]
bei org.springframework.web.servlet.handler.abstractHandhermethodmapping.initHandlermethods (AbstractHandlermethodmapPing.java:214) ~ [Spring-Webmvc-4.14.Relase.jar: 4.3.14.Relase]
bei org.springframework.web.servlet.handler.abstractHandhermethodmapping.afterPropertieStet (AbstractHandlermethodmapping.java:184) ~ [Spring-Webmvc-4.14.Relase.jar: 4.3.14.Relase]
bei org.springframework.web.servlet.mvc.method.annotation
bei org.springframework.beans.factory.support.AbstractAutoWirecapableBeArtory.invokeInitMethods (AbstractAutoWirecapableBeArtory.java:1687) ~ [Spring-Beans-43.14.Relase.jar: 4.3.14.Relase]
unter org.springframework.beans.factory.support.AbstractAutoWirecapableBeAnfactory
... 21 gemeinsame Frames weggelassen
Der Fehlergrund ist, dass die hier geerbte Schnittstellenklasse eine Controller -Schnittstelle ist, die beim Erben der übergeordneten Klasse von der übergeordneten Klasse erbt.
@RequestMapping ("/Demo/API")Als SpringMVC Mapping durchführte, wurde festgestellt, dass die Zuordnung zwischen ConsumerFeignservice und ConsumerFeigelserviceFackback wiederholt wurde, sodass eine Ausnahme ausgelöst wurde. Wie löst ich es?
Es gibt 2 Lösungen:
Ändern Sie zunächst die Zuordnungskonfiguration von ConsumerFegnServiceFallback, der Code lautet wie folgt:
@Component @requestMapping ("Fallback/Demo/API") öffentliche Klasse ConsumerFeignServiceFallback implementiert ConsumerFeignService {@Override öffentlicher Benutzer getUserById (Long ID) {return New User (); } @Override public String echo (String -Name) {return "echo error:" + name; }}Die zweite ist die Verwendung von FallbackFactory, der Code lautet wie folgt:
@ComponentPublic Class ConsumerFegnServiceFallback implementiert fallbackFactory <ConsumerFeignService> {@Override public ConsumerFeignService create (throwable cause) {neuer Verbraucherverbraucher -Service zurückgeben () {@Override Public User GetUserById (Long ID) {return New User (); } @Override public String echo (String -Name) {return "echo error:" + name; }}; }}Nach dem Laufen schaltete ich den Dienstanbieter aus und stellte fest, dass die Sicherung nicht wirksam wurde. Ich habe die Fallback -Methode nicht allein eingetragen @HystrixCommand allein. Ich überprüfte viele Methoden und stellte fest, dass der Konfigurationsschalter von HYRTIX, der ursprünglich vorgetäuscht war, nicht eingeschaltet wurde.
Lösung: Konfiguration in application.yml wie folgt hinzufügen:
vorstellen: hystrix: aktiviert: true
Es gibt keine Aufforderung für diese Konfiguration in der Intellij -Idee, und es wird auch eine Warnung gemeldet. Ich weiß nicht, ob es als Fehler angesehen wird. Die Version, die ich hier verwende
Springbootversion = '1.5.10.Release'SpringCloudversion =' Edgware.sr3 '
Die oben genannten sind einige kleine Fallstricke, die ich bei der Verwendung von Tet gefunden habe. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.