| | |
| | | private CurrencySerivceImpl currencyService; |
| | | |
| | | @Autowired |
| | | private ConfigurableApplicationContext context; |
| | | |
| | | @Autowired |
| | | @Qualifier("threadPoolTaskExecutor") |
| | | private ThreadPoolTaskExecutor threadPoolTaskExecutor; |
| | | |
| | | @Bean |
| | | public void bitgetWebsocketRunClientMap() throws JSONException, JsonProcessingException { |
| | | List<Currency> mexc = currencyService.list(new LambdaQueryWrapper<Currency>().eq(Currency::getSource, "bitget")); |
| | | List<Currency> mexc = currencyService.list(new LambdaQueryWrapper<Currency>().eq(Currency::getSource, "bitget").eq(Currency::getQuoteAsset,"USDT")); |
| | | if (!CollectionUtils.isEmpty(mexc)) { |
| | | int batchSize = 100; // 每个线程处理的数据量 |
| | | int totalSize = mexc.size(); |
| | |
| | | List<Currency> sublist = mexc.subList(fromIndex, toIndex); // 切分子列表 |
| | | String parameter = getParameter(sublist); // 获取参数 |
| | | threadPoolTaskExecutor.execute(() -> { |
| | | try { |
| | | new BitgetClient(parameter).start(); |
| | | } catch (Exception e) { |
| | | run(); |
| | | } |
| | | new BitgetClient(parameter).start(); |
| | | |
| | | }); |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | private boolean runExecuted = false; |
| | | private synchronized void run() { |
| | | |
| | | if (runExecuted) { |
| | | return; // 已经执行过,直接返回 |
| | | } |
| | | runExecuted = true; |
| | | log.info("ws 异常开始重启"); |
| | | Thread restartThread = new Thread(() -> { |
| | | try { |
| | | SpringApplication.exit(context, () -> 0); |
| | | SpringApplication.run(BitgetsClientApplication.class); |
| | | log.info("ws 重启成功"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("ws 重启失败"); |
| | | } |
| | | }); |
| | | restartThread.setDaemon(false); |
| | | restartThread.start(); |
| | | log.info("ws 重启失败"); |
| | | } |
| | | |
| | | public String getParameter(List<Currency> list) throws JsonProcessingException, JSONException { |