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

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

Go to download

Nepxion Discovery is a solution for Spring Cloud with blue green, gray, weight, limitation, circuit breaker, degrade, isolation, monitor, tracing, dye, failover, async agent

The 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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.cloud.netflix.ribbon.PropertiesFactory; import org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration; import org.springframework.cloud.netflix.ribbon.RibbonClientName; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.nepxion.discovery.plugin.framework.decorator.ZoneAvoidanceRuleDecorator; import com.nepxion.discovery.plugin.framework.listener.loadbalance.LoadBalanceListenerExecutor; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.ILoadBalancer; import com.netflix.loadbalancer.IPing; import com.netflix.loadbalancer.IRule; import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.ServerList; import com.netflix.loadbalancer.ServerListFilter; import com.netflix.loadbalancer.ServerListUpdater; import com.netflix.loadbalancer.ZoneAwareLoadBalancer; @Configuration @AutoConfigureAfter(RibbonClientConfiguration.class) public class PluginLoadBalanceConfiguration { @RibbonClientName private String serviceId = "client"; @Autowired private PropertiesFactory propertiesFactory; @Autowired private LoadBalanceListenerExecutor loadBalanceListenerExecutor; @Bean @ConditionalOnMissingBean public IRule ribbonRule(IClientConfig config) { if (this.propertiesFactory.isSet(IRule.class, serviceId)) { return this.propertiesFactory.get(IRule.class, config, serviceId); } ZoneAvoidanceRuleDecorator rule = new ZoneAvoidanceRuleDecorator(); rule.initWithNiwsConfig(config); return rule; } @Bean public ILoadBalancer ribbonLoadBalancer(IClientConfig config, ServerList serverList, ServerListFilter serverListFilter, IRule rule, IPing ping, ServerListUpdater serverListUpdater) { if (this.propertiesFactory.isSet(ILoadBalancer.class, serviceId)) { return this.propertiesFactory.get(ILoadBalancer.class, config, serviceId); } ZoneAwareLoadBalancer loadBalancer = new ZoneAwareLoadBalancer<>(config, rule, ping, serverList, serverListFilter, serverListUpdater); loadBalanceListenerExecutor.setLoadBalancer(loadBalancer); return loadBalancer; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy