我想要两种不同延迟的重试连接(我使用运行在kubernetes和jedisclinet上的redis)。可以这样做,并且使用 retryWhen
在同一个街区两次?如果没有,怎么办?单元测试给我提供了一个错误的答案(我认为只是第一个) retryWhen
被称为,但不是第二个)。虫子在哪里?
public Observable<String> getMessagesFromChannel(String channel) {
return PublishSubject.<String>fromPublisher(
subscriber ->
config.executor().execute(() ->
bindRedisSubscriptionToPublisher(channel,subscriber)))
.retryWhen(t -> t.take(config.numberOfReconnectWhenNetworkIsBreak()).delay(1, TimeUnit.SECONDS))
.doOnError(ex ->
log.trace("Trying to subscribe " + config.numberOfReconnect() + " times without success"))
.retryWhen(
ts -> ts.doOnEach(
ex -> {
log.warn(
"Redis instance down. Error while subscribing, trying to reconnect in {} ms",
config.reconnectTimeAfterRedisInstanceDown().toMillis(),
ex.getValue());
})
.delay(config.reconnectTimeAfterRedisInstanceDown().toMillis(), MILLISECONDS, config.scheduler()));
}
暂无答案!
目前还没有任何答案,快来回答吧!