From 21c4edde92e2c7bade302db52329422821f0a8d5 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 08 Jun 2022 19:23:45 +0800 Subject: [PATCH] fix some problem --- src/main/java/cc/mrbird/febs/job/ChainListenerJob.java | 67 +++++++++++++++++---------------- 1 files changed, 34 insertions(+), 33 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java b/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java index a461f94..c1efb2c 100644 --- a/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java +++ b/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java @@ -7,6 +7,8 @@ import cc.mrbird.febs.dapp.chain.ContractEventService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; @@ -18,7 +20,7 @@ @Slf4j @Component @ConditionalOnProperty(prefix = "system", name = "chain-listener", havingValue = "true") -public class ChainListenerJob { +public class ChainListenerJob implements ApplicationRunner { @Autowired private ContractEventService bscCoinContractEvent; @@ -28,38 +30,6 @@ @Autowired private RedisUtils redisUtils; - - @PostConstruct - public void chainListenerJob() { - long start = System.currentTimeMillis(); - log.info("区块链监听开始启动"); - Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM); - BigInteger newest = ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber(); - BigInteger block; - if (incrementObj == null) { - block = newest; - } else { - block = (BigInteger) incrementObj; - } - - BigInteger section = BigInteger.valueOf(5000); - while (newest.subtract(block).compareTo(section) > -1) { - BigInteger end = block.add(section); - log.info("监听:[{} - {}]", block, end); - ChainService.contractEventListener(block, end, bscUsdtContractEvent, ChainEnum.BSC_USDT.name()); - ChainService.contractEventListener(block, end, bscCoinContractEvent, ChainEnum.BSC_TFC.name()); - - block = block.add(section); - if (block.compareTo(newest) > 0) { - block = newest; - } - } - ChainService.contractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name()); - ChainService.contractEventListener(block, bscCoinContractEvent, ChainEnum.BSC_TFC.name()); - - long end = System.currentTimeMillis(); - log.info("区块链监听启动完成, 消耗时间{}", end - start); - } @Scheduled(cron = "0 0/5 * * * ? ") public void chainBlockUpdate() { @@ -96,4 +66,35 @@ redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, toIncrement); } + @Override + public void run(ApplicationArguments args) throws Exception { + long start = System.currentTimeMillis(); + log.info("区块链监听开始启动"); + Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM); + BigInteger newest = ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber(); + BigInteger block; + if (incrementObj == null) { + block = newest; + } else { + block = (BigInteger) incrementObj; + } + + BigInteger section = BigInteger.valueOf(5000); + while (newest.subtract(block).compareTo(section) > -1) { + BigInteger end = block.add(section); + log.info("监听:[{} - {}]", block, end); + ChainService.contractEventListener(block, end, bscUsdtContractEvent, ChainEnum.BSC_USDT.name()); + ChainService.contractEventListener(block, end, bscCoinContractEvent, ChainEnum.BSC_TFC.name()); + + block = block.add(section); + if (block.compareTo(newest) > 0) { + block = newest; + } + } + ChainService.contractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name()); + ChainService.contractEventListener(block, bscCoinContractEvent, ChainEnum.BSC_TFC.name()); + + long end = System.currentTimeMillis(); + log.info("区块链监听启动完成, 消耗时间{}", end - start); + } } -- Gitblit v1.9.1