return Single.fromFuture(
asyncStub.withDeadlineAfter(ClientConfiguration.INSTANCE.getMaxTimeout(), TimeUnit.SECONDS).checkBalance(payload))
.doOnSubscribe(s -> System.out.println("subscribing"))
.doOnSuccess((resp) -> {
log.info("Check Balance got response success {}", resp.getUserID());
log.debug("Check Balance got response success {}", resp.toString());
})
.doOnError(throwable -> {
this.logError(throwable, "Check balance userid:" + payload);
})
.retry((retryCount, error) -> retryCount < 3).toFuture();
从客户端重试,但在服务器上它没有收到新请求请建议我做错了什么
显然您在涉及 RxJava 之前创建了一个
Future
,因此重试“常量”没有效果。即,
var serverCall = asyncStub.withDeadlineAfter(
ClientConfiguration.INSTANCE.getMaxTimeout(), TimeUnit.SECONDS
)
.checkBalance(payload)
;
Single.fromFuture(serverCall)
当(重新)订阅发生时,您必须创建一个新的
Future
:
return Single.defer(() ->
Single.fromFuture(
asyncStub.withDeadlineAfter(
ClientConfiguration.INSTANCE.getMaxTimeout(), TimeUnit.SECONDS
)
.checkBalance(payload)
)
)
.doOnSubscribe(s -> System.out.println("subscribing"))
.doOnSuccess((resp) -> {
log.info("Check Balance got response success {}", resp.getUserID());
log.debug("Check Balance got response success {}", resp.toString());
})
.doOnError(throwable -> {
this.logError(throwable, "Check balance userid:" + payload);
})
.retry((retryCount, error) -> retryCount < 3)
.toFuture()