SpringCloud 如何提供Ribbon的IRule的密钥
2023-11-22 14:29 更新
如果您需要提供自己的IRule
实现来处理诸如“ canary ”
测试之类的特殊路由要求,请将一些信息传递给IRule
的choose
方法。
com.netflix.loadbalancer.IRule.java。
public interface IRule{ public Server choose(Object key); :
您可以提供一些信息,供您的IRule
实现用来选择目标服务器,如以下示例所示:
RequestContext.getCurrentContext() .set(FilterConstants.LOAD_BALANCER_KEY, "canary-test");
如果您使用密钥FilterConstants.LOAD_BALANCER_KEY
将任何对象放入RequestContext
中,则该对象将传递到IRule
实现的choose
方法中。
上例中显示的代码必须在执行RibbonRoutingFilter
之前执行。Zuul的前置过滤器是执行此操作的最佳位置。您可以通过预过滤器中的RequestContext
访问HTTP标头和查询参数,因此可以用来确定传递到Ribbon的LOAD_BALANCER_KEY
。
如果没有在RequestContext
中用LOAD_BALANCER_KEY
放置任何值,则将空值作为choose
方法的参数传递。
以上内容是否对您有帮助:
更多建议: