Я пытаюсь восстановить ошибки, используя RxJava и GRPC.Это моя наблюдаемая:
Observable<Object> observable = Observable.fromCallable(() -> {
try {
Grpc.MyRequest request = Grpc.MyRequest.newBuilder()
.setToken(mToken)
.build();
Grpc.MyResponse reply = mStub.mytest(request);
return reply;
} catch (Exception e) {
///
}
}).cache();
И это подписка:
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(throwable -> {
})
.subscribe((result) -> {
MyResponse res = ((MyResponse) result);
if (res.getCode()!=0) {
//Check error code and try to refresh token and repeat this request after.
}
},throwable -> {
throwable.printStackTrace();
});
Итак, когда я получаю ошибку от моей службы GRPC, в зависимости от кода ошибки, я хочупопытайтесь восстановить его, выполнив другой запрос, а затем повторив исходный запрос.Я не уверен, как использовать RxJava retrywhen .Какой самый элегантный способ сделать что-то подобное?