+
public class CustomLoadBalancerConfiguration {
+
+ @Bean
+ public ServiceInstanceListSupplier discoveryClientServiceInstanceListSupplier(
+ ReactiveDiscoveryClient discoveryClient, Environment environment,
+ LoadBalancerProperties loadBalancerProperties,
+ ApplicationContext context,
+ InstanceHealthChecker healthChecker) {
+ DiscoveryClientServiceInstanceListSupplier firstDelegate = new DiscoveryClientServiceInstanceListSupplier(
+ discoveryClient, environment);
+ HealthCheckServiceInstanceListSupplier delegate = new HealthCheckServiceInstanceListSupplier(firstDelegate,
+ loadBalancerProperties, healthChecker);
+ ObjectProvider<LoadBalancerCacheManager> cacheManagerProvider = context
+ .getBeanProvider(LoadBalancerCacheManager.class);
+ if (cacheManagerProvider.getIfAvailable() != null) {
+ return new CachingServiceInstanceListSupplier(delegate,
+ cacheManagerProvider.getIfAvailable());
+ }
+ return delegate;
+ }
+ }
+