KKSU
2024-05-09 f2dd0068e9f235fd364120cb32607169831b2c98
src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java
@@ -32,6 +32,7 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * @author
@@ -113,6 +114,14 @@
        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(