【问题标题】:IllegalStateException in retryWhen with ReadStreamAdapterIllegalStateException in retryWhen with ReadStreamAdapter
【发布时间】:2016-01-29 15:08:57
【问题描述】:

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

知道如何实现吗?

【问题讨论】:

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


    【解决方案1】:

    您可以使用defermethodclient 每次像这样创建一个Observable:

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

    【讨论】:

      猜你喜欢
      • 2014-11-16
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多