我试图使用 netflix observable 但是我设法只同步地这样做:
这就是我定义远程调用的方式:
@Named
public class BroConsumerService {
..
@HystrixCommand(fallbackMethod = "stubbedMethod")
public Observable<String> executeObservableBro(String name) {
return new ObservableResult<String>() {
@Override
public String invoke() {
return executeRemoteService(name);
}
};
}
private String stubbedMethod(String name) {
return "return stubbed";
}
//这里我实际上是在调用(并观察这个方法)
@RequestMapping("/executeObservableBro")
public String executeObservableBro(@RequestParam(value = "name", required = false) String name) throws ExecutionException, InterruptedException {
Observable<String> result= broConsumerService.executeObservableBro(name);
result.subscribe(new Observer<String>() {
@Override
public void onCompleted() {
System.out.println("completed");
}
@Override
public void onError(Throwable e) {
System.out.printf(e.getMessage());
}
@Override
public void onNext(String s) {
System.out.println("on next..");
}
});
}
但这是同步工作的。我希望能够在执行之前“收听”executeObservableBro。并且每次执行时都会收到通知。
示例将不胜感激。
谢谢,雷。