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).
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.
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.
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.
Tags und Links java spring-cloud hystrix