Skip to content

Commit 0bef780

Browse files
committed
优化灰度装载方式
1 parent 5de16f3 commit 0bef780

File tree

7 files changed

+44
-84
lines changed

7 files changed

+44
-84
lines changed

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/GrayClientConfig.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,4 @@ public interface GrayClientConfig {
3232
*/
3333
int getInfosUpdateIntervalTimerInMs();
3434

35-
36-
int getInfosInitializeDelayTimeInMs();
3735
}

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/config/GrayClientAutoConfiguration.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import cn.springcloud.gray.client.GrayClientEnrollInitializingDestroyBean;
99
import cn.springcloud.gray.client.config.properties.*;
1010
import cn.springcloud.gray.client.initialize.DefaultGrayInfosInitializer;
11+
import cn.springcloud.gray.client.initialize.GrayClientApplicationRunner;
1112
import cn.springcloud.gray.client.initialize.GrayInfosInitializer;
1213
import cn.springcloud.gray.client.switcher.EnvGraySwitcher;
1314
import cn.springcloud.gray.client.switcher.GraySwitcher;
@@ -166,6 +167,11 @@ public GrayInfosInitializer grayInfosInitializer(
166167
return new DefaultGrayInfosInitializer(grayClientConfig, informationClient, refreshDriver);
167168
}
168169

170+
@Bean
171+
public GrayClientApplicationRunner grayClientApplicationRunner(GrayInfosInitializer grayInfosInitializer) {
172+
return new GrayClientApplicationRunner(grayInfosInitializer);
173+
}
174+
169175
@Bean
170176
@ConditionalOnMissingBean
171177
public ServerChooser serverChooser(

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/config/properties/GrayClientProperties.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@ public class GrayClientProperties implements GrayClientConfig {
1313

1414
private int infosUpdateIntervalTimerInMs = 0;
1515

16-
/**
17-
* 实始化灰度信息的延迟时间
18-
*/
19-
private int infosInitializeDelayTimeInMs = 40000;
20-
2116
private InstanceConfig instance = new InstanceConfig();
2217

2318
private Map<String, CacheProperties> caches = new HashMap<>();
@@ -43,20 +38,6 @@ public int getInfosUpdateIntervalTimerInMs() {
4338
return infosUpdateIntervalTimerInMs;
4439
}
4540

46-
@Override
47-
public int getInfosInitializeDelayTimeInMs() {
48-
return infosInitializeDelayTimeInMs;
49-
}
50-
51-
52-
public void setInfosUpdateIntervalTimerInMs(int infosUpdateIntervalTimerInMs) {
53-
this.infosUpdateIntervalTimerInMs = infosUpdateIntervalTimerInMs;
54-
}
55-
56-
public void setInfosInitializeDelayTimeInMs(int infosInitializeDelayTimeInMs) {
57-
this.infosInitializeDelayTimeInMs = infosInitializeDelayTimeInMs;
58-
}
59-
6041
public Map<String, CacheProperties> getCaches() {
6142
return caches;
6243
}

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/initialize/DefaultGrayInfosInitializer.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,7 @@ private void scheduleOpenForWork() {
5252
return;
5353
}
5454
scheduleOpenForWorkCount++;
55-
56-
updateTimer.schedule(new TimerTask() {
57-
@Override
58-
public void run() {
59-
openForWork();
60-
}
61-
}, getGrayClientConfig().getInfosInitializeDelayTimeInMs());
55+
openForWork();
6256
}
6357

6458
public void openForWork() {
@@ -69,6 +63,11 @@ public void openForWork() {
6963
if (timerMs > 0) {
7064
updateTimer.schedule(new DefaultGrayInfosInitializer.UpdateTask(), timerMs, timerMs);
7165
} else if (!t) {
66+
try {
67+
Thread.sleep(5000);
68+
} catch (InterruptedException e) {
69+
70+
}
7271
scheduleOpenForWork();
7372
}
7473
}

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/initialize/GrayClientApplicationRunListener.java

Lines changed: 0 additions & 54 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package cn.springcloud.gray.client.initialize;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.beans.BeansException;
5+
import org.springframework.boot.ApplicationArguments;
6+
import org.springframework.boot.ApplicationRunner;
7+
8+
/**
9+
* @author saleson
10+
* @date 2020-08-16 17:02
11+
*/
12+
@Slf4j
13+
public class GrayClientApplicationRunner implements ApplicationRunner {
14+
private GrayInfosInitializer grayInfosInitializer;
15+
16+
public GrayClientApplicationRunner(GrayInfosInitializer grayInfosInitializer) {
17+
this.grayInfosInitializer = grayInfosInitializer;
18+
}
19+
20+
@Override
21+
public void run(ApplicationArguments args) throws Exception {
22+
log.info("开始装载灰度...");
23+
try {
24+
grayInfosInitializer.setup();
25+
} catch (BeansException e) {
26+
log.warn("灰度装载失败,cause:{}", e.getMessage());
27+
}
28+
log.info("灰度装载完成.");
29+
}
30+
}

spring-cloud-starter-gray-client/src/main/resources/META-INF/spring.factories

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
org.springframework.boot.SpringApplicationRunListener=\
2-
cn.springcloud.gray.client.initialize.GrayClientApplicationRunListener
1+
#org.springframework.boot.SpringApplicationRunListener=\
2+
# cn.springcloud.gray.client.initialize.GrayClientApplicationRunListener
33
# Auto Configure
44
#cn.springcloud.gray.client.EnableGrayClient=\
55
# cn.springcloud.gray.client.config.GrayClientImportSelector

0 commit comments

Comments
 (0)