首页IT科技springboot熔断配置(springboot~openfeign开启熔断之后MDC为null的理解)

springboot熔断配置(springboot~openfeign开启熔断之后MDC为null的理解)

时间2025-08-02 05:57:36分类IT科技浏览5559
导读:openfeign开启熔断之后MDC为null,这是有前提的,首先,你的熔断开启后,使用的是线程池的熔断模式,即hystrix.command.default.execution.isolation.strategy=THREAD,或者不写这行,如果值是SEMAPHORE模式,是可以获取到MDC对象的,因为这种信号量模式,并没有产...

openfeign开启熔断之后MDC为null              ,这是有前提的                       ,首先        ,你的熔断开启后              ,使用的是线程池的熔断模式                      ,即hystrix.command.default.execution.isolation.strategy=THREAD        ,或者不写这行       ,如果值是SEMAPHORE模式                      ,是可以获取到MDC对象的               ,因为这种信号量模式       ,并没有产生新的线程                      ,所以对于ThreadLocal类型的MDC对象               ,是可以获取到的              。

openFeign的熔断配置

ribbon: #ribbon请求连接的超时时间- 限制3秒内必须请求到服务,并不限制服务处理的返回时间 connectTimeout: 1000 #请求处理的超时时间 下级服务响应最大时间,超出时间消费方(路由也是消费方)返回timeout,超时时间不可大于断路器的超时时间 readTimeout: 2000 hystrix: command: default: execution: timeout: enabled: true isolation: strategy: THREAD #信号量模式                      ,无超时时间;THREAD线程池模块                       ,这是默认的 thread: timeoutInMilliseconds: 3000 #对THREAD模式才有效 feign: hystrix: # Feign启用断路器,默认为FALSE              ,如果开启熔断                       ,如果是线程池模式        ,会在新线池中发起请求              ,这时MDC无论获取到                      ,如果是SEMAPHORE模式        ,是可以获取到MDC的 enabled: true

在openFeign的拦截器中       ,获取MDC中的traceId

注意                      ,咱们的这个拦截器获取traceId功能               ,只是在SEMAPHORE模式才有效【注意       ,这种模式的熔断是没有超时时间的                      ,所以性能不太好               ,高并发时,请求慢的慢                      ,容易堆积                       ,造成服务器的雪崩】

@Configuration public class FeignTraceIdInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate template) { String traceId = MDC.get(TRACE_ID); if (traceId != null) { template.header(HTTP_HEADER_TRACE, traceId); } } }

在后面的调研中,我们还会针对THREAD模块进行探究              ,找到获取MDC中traceId的方法                       ,请期待                       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
电脑前面耳机没有声音怎么办(电脑前面板耳机没声音设置方法) vue unable to preventdefault(解决Vue报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location)