博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ribbon个性化参数设置
阅读量:5816 次
发布时间:2019-06-18

本文共 2047 字,大约阅读时间需要 6 分钟。

当使用zuul作为api网关的时候,默认的ribbon的超时设置是针对整个service的,那么如果想针对某几个url单独设置超时,该怎么办呢?

RibbonRequestCustomizer

package org.springframework.cloud.netflix.ribbon.support;import java.util.List;/** * @author Spencer Gibb */public interface RibbonRequestCustomizer {    boolean accepts(Class builderClass);    void customize(B builder);    class Runner {        @SuppressWarnings("unchecked")        public static void customize(List
customizers, Object builder) { for (RibbonRequestCustomizer customizer : customizers) { if (customizer.accepts(builder.getClass())) { customizer.customize(builder); } } } }}

使用

@Bean    @ConditionalOnClass(name = "org.apache.http.client.methods.RequestBuilder")    public RibbonRequestCustomizer
apacheHttpRibbonRequestCustomizer() { return new ApacheHttpClientRibbonRequestCustomizer(); }

ApacheHttpClientRibbonRequestCustomizer

public class ApacheHttpClientRibbonRequestCustomizer implements RibbonRequestCustomizer
{ @Override public boolean accepts(Class builderClass) { return builderClass.equals(RequestBuilder.class); } @Override public void customize(RequestBuilder builder) { URI uri = builder.getUri(); String path = uri.getPath(); //"/review/timeout" System.out.println("request customizer uri:"+path); RequestConfig.Builder configBuilder = builder.getConfig() == null ? RequestConfig.custom():RequestConfig.copy(builder.getConfig()); if(path.equals("/review/timeout")){ configBuilder.setConnectionRequestTimeout(30*1000); configBuilder.setConnectTimeout(30*1000); configBuilder.setSocketTimeout(30*1000); builder.setConfig(configBuilder.build()); } //todo 这里设置没有用,最后还是会被重置 //org/springframework/cloud/netflix/ribbon/apache/RibbonApacheHttpRequest.java 76 //read config }}

结论

这种方式目前还不能个性化timeout参数,因为最后在RibbonApacheHttpRequest会被重置回来,但是可以添加一些header之类的。

转载地址:http://odqbx.baihongyu.com/

你可能感兴趣的文章
Linux 目录结构及内容详解
查看>>
Oracle命令导入dmp文件
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
查看>>
.net excel利用NPOI导入oracle
查看>>
第六课:数据库的基本工具
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
skynet实践(8)-接入websocket
查看>>
系统版本判断
查看>>
My97DatePicker 日历插件
查看>>
0603 学术诚信与职业道德
查看>>
小点心家族第3位成员——楼层定位效果
查看>>
Knockout.Js官网学习(enable绑定、disable绑定)
查看>>
hive基本操作与应用
查看>>
excel快捷键设置
查看>>
poj3692
查看>>
python之信号量【Semaphore】
查看>>
html5纲要,细谈HTML 5新增的元素
查看>>
Android应用集成支付宝接口的简化
查看>>
[分享]Ubuntu12.04安装基础教程(图文)
查看>>