Die asynchronen Hystrix-Methoden innerhalb von javanica werden nicht in Spring-Boot-Java-Anwendungen ausgeführt

8

Ich benutze Spring-Cloud-Starter (dh .. Spring-Boot mit allen Microservices Features). Folgen Sie den Anweisungen auf der Website javanica github ( Ссылка ), damit diese Methode asynchron ausgeführt wird, unabhängig davon, ob ich ihre 'Future & lt; & gt;' oder Reaktive Ausführung 'Observable & lt; & gt;', nichts läuft / führt aus und ich erhalte immer java.lang.ClassCastException: springbootdemo.EricComponent cannot be cast to springbootdemo.Eric , wenn ich versuche, das Ergebnis zu ziehen (im Fall von Future & lt; & gt;) oder einen Rückruf zu erhalten (im Falle von Reactive Execution .. und println nicht auslösen, so dass es wirklich nicht lief).

%Vor%

Warum würde ich ein EricComponent anstatt eines Eric bekommen? Übrigens, Eric ist nur eine einfache Klasse mit 2 Strings ... es wird weggelassen.

Ich denke, dass ich explizit ausführen muss, aber das spielt auf mich an, weil: 1) es mit Future & lt; & gt; Die queue () -Methode ist nicht verfügbar, wie die Dokumentation behauptet und 2) macht es mit Observable & lt; & gt; es gibt wirklich keinen Weg es auszuführen, den ich bekomme.

    
RubesMN 14.10.2014, 23:52
quelle

1 Antwort

3

Haben Sie die Annotation @EnableHystrix für Ihre Anwendungsklasse?

Die subscribe -Methode ist asynchron und Sie versuchen, eine Liste in einer synchronen Controller-Methode aufzufüllen, damit dort ein Problem auftreten kann. Kannst du das subscribe zu toBlockingObservable().forEach() ändern und sehen, ob das hilft?

Update # 1 Ich konnte kopieren. Ihre Standardmethode sollte kein Observable<Eric> , nur ein Eric zurückgeben.

%Vor%

Update # 2 Siehe meinen Code hier Ссылка

Update # 3 Als ich das fallbackMethod -Attribut auskommentierte, beklagte es sich, dass es keine öffentliche Version von EricComponent für AOP finden konnte. Ich habe EricComponent public static gemacht und es hat funktioniert. Eine Top-Level-Klasse in einer eigenen Datei würde funktionieren. Mein Code, oben verlinkt, funktioniert (vorausgesetzt, der RestTemplate-Aufruf funktioniert) und gibt n OK zurück.

    
spencergibb 15.10.2014, 00:38
quelle

Tags und Links