Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有ReadStreamAdapter的retryWhen中存在IllegalStateException_Java_Java 8_Rx Java_Vert.x - Fatal编程技术网

Java 带有ReadStreamAdapter的retryWhen中存在IllegalStateException

Java 带有ReadStreamAdapter的retryWhen中存在IllegalStateException,java,java-8,rx-java,vert.x,Java,Java 8,Rx Java,Vert.x,当对我的一个外部服务的外部http请求失败时,我正在使用retryWhen。 问题是我正在使用 RxHelper.toObservable(httpClient.request(method, url)) 为了获得可观察到的响应,并且由于vertx在内部使用ReadStreamAdapter,我不能使用retryWhen,因为它是 java java.lang.IllegalStateException: Request already complete 下面是一个代码示例: Rx

当对我的一个外部服务的外部http请求失败时,我正在使用
retryWhen
。 问题是我正在使用

  RxHelper.toObservable(httpClient.request(method, url))
为了获得可观察到的响应,并且由于vertx在内部使用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));

您知道如何实现这一点吗?

您可以使用
延迟
方法
客户机
创建一个可观察的方法,每次都是这样:

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