All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.nepxion.discovery.plugin.framework.configuration.EurekaLoadBalanceConfiguration Maven / Gradle / Ivy

There is a newer version: 6.2.0
Show newest version
package com.nepxion.discovery.plugin.framework.configuration;

/**
 * 

Title: Nepxion Discovery

*

Description: Nepxion Discovery

*

Copyright: Copyright (c) 2017-2050

*

Company: Nepxion

* @author Haojun Ren * @version 1.0 */ import javax.inject.Provider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.cloud.netflix.ribbon.PropertiesFactory; import org.springframework.cloud.netflix.ribbon.RibbonClientName; import org.springframework.cloud.netflix.ribbon.eureka.EurekaRibbonClientConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; import com.nepxion.discovery.plugin.framework.decorator.EurekaServerListDecorator; import com.nepxion.discovery.plugin.framework.listener.loadbalance.LoadBalanceListenerExecutor; import com.netflix.client.config.IClientConfig; import com.netflix.discovery.EurekaClient; import com.netflix.loadbalancer.ServerList; import com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList; @Configuration @AutoConfigureAfter(EurekaRibbonClientConfiguration.class) public class EurekaLoadBalanceConfiguration { @Value("${ribbon.eureka.approximateZoneFromHostname:false}") private boolean approximateZoneFromHostname = false; @RibbonClientName private String serviceId = "client"; @Autowired private PropertiesFactory propertiesFactory; @Autowired private ConfigurableEnvironment environment; @Autowired private LoadBalanceListenerExecutor loadBalanceListenerExecutor; @Bean public ServerList ribbonServerList(IClientConfig config, Provider eurekaClientProvider) { if (this.propertiesFactory.isSet(ServerList.class, serviceId)) { return this.propertiesFactory.get(ServerList.class, config, serviceId); } DiscoveryEnabledNIWSServerList discoveryServerList = new DiscoveryEnabledNIWSServerList(config, eurekaClientProvider); EurekaServerListDecorator serverList = new EurekaServerListDecorator(discoveryServerList, config, this.approximateZoneFromHostname); serverList.setEnvironment(environment); serverList.setLoadBalanceListenerExecutor(loadBalanceListenerExecutor); serverList.setServiceId(config.getClientName()); return serverList; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy