ich verwende Reaktor 2 und Spring 4. Hier ist der typische Code, den ich habe - ein Consumer
mit einem Repository arbeitenHandhabung Ausnahmen von Reactor Spring
@Consumer
public class ApplicationService {
@Selector(value="/applications/id", type = SelectorType.URI)
@ReplyTo
public Application byApplicationId(String id) throws ApplicationNotFoundException {
Application app = appRepo.findOne(id);
if(app == null)
throw new ApplicationNotFoundException("Application `" + id + "` could not be found.");
return app;
}
}
Dann habe ich einen Controller, der die Anfrage an einen eventBus
gibt in denen gebe ich Anfragen und Rück eine Ausnahme Promise
s Wert nicht gesetzt ein Promise
@RestController
@RequestMapping("/applications")
public class ApplicationsController {
@RequestMapping(value = "/{id}", method = GET, produces = APPLICATION_JSON_VALUE)
public Promise<Event<Application>> byApplicationId(@PathVariable final String id) {
final Promise<Event<Application>> p = Promises.prepare(env);
eventBus.sendAndReceive("/applications/id", Event.wrap(id), p);
return p;
}
}
Dinge funktionieren, aber im Fall von ApplicationService
werfen, aber ich in th folgenden erhalte e-Konsole:
16:46:58.003 [main] ERROR reactor.bus.EventBus - null
java.lang.reflect.UndeclaredThrowableException
at org.springframework.util.ReflectionUtils.rethrowRuntimeException(ReflectionUtils.java:302)
...
Caused by: com.metlife.harmony.exceptions.ApplicationNotFoundException: Application `2860c555-0bc4-45e6-95ea-f724ae3f4464` could not be found.
at com.metlife.harmony.services.ApplicationService.byApplicationId(ApplicationService.java:46) ~[classes/:?]
...
Caused by: reactor.core.support.Exceptions$ValueCause: Exception while signaling value: reactor.bus.Event.class : Event{id=null, headers={}, [email protected], key=/applications/id, data=2860c555-0bc4-45e6-95ea-f724ae3f4464}
Fragen sind:
verwende ich Reactor und
eventBus
in die falsche Richtung? und wenn ja, was ist der richtige Wegvielleicht diese Funktionalität noch nicht implementiert ist
'eventBus.sendAndReceive ("/ Anwendungen/id", Event.wrap (id), p) zur Verfügung,' es cuase nicht Fehler Gießen? –
@AnadiMisra an welchem Punkt? – EvgeniySharapov
Ich habe versucht, Ihren Code aus Neugier und ich habe diese 'Die Methode sendAndReceive (Objekt, Ereignis >, Consumer) im Typ EventBus ist nicht anwendbar für die Argumente (String, Event , Promise >)' bei Linie, mein Promise-Objekt 'Versprechen > Antwort = Promises.prepare (env);' –