| | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | |
| | | /** |
| | | * @author |
| | |
| | | Flowable<EthUsdtContract.CoinRewardEventResponse> eventFlowable = contract.coinRewardEventFlowable(filter) |
| | | .doOnError(throwable -> |
| | | log.error("合约事件监听发生错误: " + throwable.getMessage(), throwable)) // 更具体的错误日志记录 |
| | | .retryWhen(errors -> { |
| | | AtomicInteger counter = new AtomicInteger(); |
| | | return errors.takeWhile(e -> counter.getAndIncrement() != 3) |
| | | .flatMap(e -> { |
| | | System.out.println("delay retry by " + counter.get() + " second(s)"); |
| | | return Flowable.timer(counter.get(), TimeUnit.SECONDS); |
| | | }); |
| | | }) |
| | | .subscribeOn(Schedulers.io()); // 指定subscribe操作在IO线程中执行,避免阻塞主线程 |
| | | |
| | | eventFlowable.subscribe( |