Skip to content

Commit 7b159e9

Browse files
committed
feat:call choose method when eagerly initializing the load-balancers.
Signed-off-by: Haotian Zhang <[email protected]>
1 parent f2504bb commit 7b159e9

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,24 @@
1616

1717
package org.springframework.cloud.loadbalancer.support;
1818

19-
import java.util.List;
20-
19+
import org.apache.commons.logging.Log;
20+
import org.apache.commons.logging.LogFactory;
2121
import org.springframework.boot.context.event.ApplicationReadyEvent;
22+
import org.springframework.cloud.client.ServiceInstance;
23+
import org.springframework.cloud.client.loadbalancer.Response;
24+
import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer;
2225
import org.springframework.context.ApplicationListener;
26+
import reactor.core.publisher.Mono;
27+
28+
import java.util.List;
2329

2430
/**
25-
* @author Andrii Bohutskyi
31+
* @author Andrii Bohutskyi, Haotian Zhang
2632
*/
2733
public class LoadBalancerEagerContextInitializer implements ApplicationListener<ApplicationReadyEvent> {
2834

35+
private static final Log log = LogFactory.getLog(LoadBalancerEagerContextInitializer.class);
36+
2937
private final LoadBalancerClientFactory factory;
3038

3139
private final List<String> serviceNames;
@@ -37,7 +45,17 @@ public LoadBalancerEagerContextInitializer(LoadBalancerClientFactory factory, Li
3745

3846
@Override
3947
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
40-
serviceNames.forEach(factory::getInstance);
48+
serviceNames.forEach(serviceName -> {
49+
ReactiveLoadBalancer<ServiceInstance> loadBalancer = factory.getInstance(serviceName);
50+
if (loadBalancer != null) {
51+
Response<ServiceInstance> loadBalancerResponse = Mono.from(loadBalancer.choose()).block();
52+
if (log.isDebugEnabled() && loadBalancerResponse != null) {
53+
log.debug("LoadBalancer for service: " + serviceName + " initialized with chosen instance: "
54+
+ loadBalancerResponse.getServer().getHost() + ":" + loadBalancerResponse.getServer().getPort());
55+
}
56+
log.info("LoadBalancer for service: " + serviceName + " initialized");
57+
}
58+
});
4159
}
4260

4361
}

0 commit comments

Comments
 (0)