重试时出现IllegalStateException与ReadStreamAdapter一起使用

时间:2016-01-29 15:08:58

标签: java java-8 rx-java vert.x

当我对其中一个外部服务的外部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));

知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:3)

您每次都可以使用defermethodclient创建一个Observable:

 Observable.defer(() -> RxHelper.toObservable(httpClient.request(method, url)))
  .retryWhen(new ServiceExceptionRetry())       
  .subscribe(f -> replySuccess(eventMsg, event, f), t -> handleError(t, eventMsg, event));