当我对其中一个外部服务的外部http请求失败时,我正在使用retryWhen
。
问题是我正在使用
RxHelper.toObservable(httpClient.request(method, url))
要获得我的可观察响应,并且因为在内部使用了ReadStreamAdapter我不能使用retryWhen因为它抱怨
java java.lang.IllegalStateException: Request already complete
这是一个代码示例:
RxHelper.toObservable(httpClient.request(method, url))
.retryWhen(new ServiceExceptionRetry())
.subscribe(f -> replySuccess(eventMsg, event, f), t -> handleError(t, eventMsg, event));
知道如何实现这个目标吗?
答案 0 :(得分:3)
您每次都可以使用defer
从method
和client
创建一个Observable:
Observable.defer(() -> RxHelper.toObservable(httpClient.request(method, url)))
.retryWhen(new ServiceExceptionRetry())
.subscribe(f -> replySuccess(eventMsg, event, f), t -> handleError(t, eventMsg, event));