SpringCloud 如何提供Ribbon的IRule的密钥

2023-11-22 14:29 更新

如果您需要提供自己的IRule实现来处理诸如canary 测试之类的特殊路由要求,请将一些信息传递给IRulechoose方法。

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方法的参数传递。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号