diff --git a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java index 7a72cb684..3842bafe7 100644 --- a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java +++ b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java @@ -16,16 +16,24 @@ package org.springframework.cloud.loadbalancer.support; -import java.util.List; - +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.loadbalancer.Response; +import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer; import org.springframework.context.ApplicationListener; +import reactor.core.publisher.Mono; + +import java.util.List; /** - * @author Andrii Bohutskyi + * @author Andrii Bohutskyi, Haotian Zhang */ public class LoadBalancerEagerContextInitializer implements ApplicationListener { + private static final Log log = LogFactory.getLog(LoadBalancerEagerContextInitializer.class); + private final LoadBalancerClientFactory factory; private final List serviceNames; @@ -37,7 +45,17 @@ public LoadBalancerEagerContextInitializer(LoadBalancerClientFactory factory, Li @Override public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { - serviceNames.forEach(factory::getInstance); + serviceNames.forEach(serviceName -> { + ReactiveLoadBalancer loadBalancer = factory.getInstance(serviceName); + if (loadBalancer != null) { + Response loadBalancerResponse = Mono.from(loadBalancer.choose()).block(); + if (log.isDebugEnabled() && loadBalancerResponse != null) { + log.debug("LoadBalancer for service: " + serviceName + " initialized with chosen instance: " + + loadBalancerResponse.getServer().getHost() + ":" + loadBalancerResponse.getServer().getPort()); + } + log.info("LoadBalancer for service: " + serviceName + " initialized"); + } + }); } }