From 83969bcd786d38499dff66e619305c53f500756d Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Sat, 16 Jul 2022 10:13:42 +0800 Subject: [PATCH] Hystrix is optimized for adaptation --- .../core/ThreadPoolAdapterRegister.java | 55 ++++++++++--------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/ThreadPoolAdapterRegister.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/ThreadPoolAdapterRegister.java index 77101f5c..eaf33f08 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/ThreadPoolAdapterRegister.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/springboot/starter/core/ThreadPoolAdapterRegister.java @@ -74,7 +74,6 @@ public class ThreadPoolAdapterRegister implements ApplicationRunner { ScheduledExecutorService scheduler = threadPoolAdapterScheduler.getScheduler(); int taskIntervalSeconds = threadPoolAdapterScheduler.getTaskIntervalSeconds(); ThreadPoolAdapterRegisterTask threadPoolAdapterRegisterTask = new ThreadPoolAdapterRegisterTask(scheduler, taskIntervalSeconds); - scheduler.schedule(threadPoolAdapterRegisterTask, threadPoolAdapterScheduler.getTaskIntervalSeconds(), TimeUnit.SECONDS); } @@ -131,32 +130,9 @@ public class ThreadPoolAdapterRegister implements ApplicationRunner { @Override public void run() { try { - boolean registerFlag = false; - List newThreadPoolAdapterCacheConfigs = getThreadPoolAdapterCacheConfigs(); - Map> newThreadPoolAdapterCacheConfigMap = - newThreadPoolAdapterCacheConfigs.stream().collect(Collectors.toMap( - ThreadPoolAdapterCacheConfig::getMark, ThreadPoolAdapterCacheConfig::getThreadPoolAdapterStates, (k1, k2) -> k2)); - - Map> oldThreadPoolAdapterCacheConfigMap = - cacheConfigList.stream().collect(Collectors.toMap( - ThreadPoolAdapterCacheConfig::getMark, ThreadPoolAdapterCacheConfig::getThreadPoolAdapterStates, (k1, k2) -> k2)); - - for (Map.Entry> entry : newThreadPoolAdapterCacheConfigMap.entrySet()) { - String key = entry.getKey(); - List newValue = entry.getValue(); - List oldValue = oldThreadPoolAdapterCacheConfigMap.get(key); - if (oldValue == null) { - registerFlag = true; - break; - }else { - if (newValue.size() != oldValue.size()) { - registerFlag = true; - break; - } - } - } + boolean registerFlag = compareThreadPoolAdapterCacheConfigs(newThreadPoolAdapterCacheConfigs, cacheConfigList); cacheConfigList = newThreadPoolAdapterCacheConfigs; @@ -172,4 +148,33 @@ public class ThreadPoolAdapterRegister implements ApplicationRunner { } } } + + private boolean compareThreadPoolAdapterCacheConfigs(List newThreadPoolAdapterCacheConfigs, + List oldThreadPoolAdapterCacheConfigs){ + boolean registerFlag = false; + + Map> newThreadPoolAdapterCacheConfigMap = + newThreadPoolAdapterCacheConfigs.stream().collect(Collectors.toMap( + ThreadPoolAdapterCacheConfig::getMark, ThreadPoolAdapterCacheConfig::getThreadPoolAdapterStates, (k1, k2) -> k2)); + + Map> oldThreadPoolAdapterCacheConfigMap = + oldThreadPoolAdapterCacheConfigs.stream().collect(Collectors.toMap( + ThreadPoolAdapterCacheConfig::getMark, ThreadPoolAdapterCacheConfig::getThreadPoolAdapterStates, (k1, k2) -> k2)); + + for (Map.Entry> entry : newThreadPoolAdapterCacheConfigMap.entrySet()) { + String key = entry.getKey(); + List newValue = entry.getValue(); + List oldValue = oldThreadPoolAdapterCacheConfigMap.get(key); + if (oldValue == null) { + registerFlag = true; + break; + }else { + if (newValue.size() != oldValue.size()) { + registerFlag = true; + break; + } + } + } + return registerFlag; + } }