使用fegin做服务的调用的时候,报错:handleAllExceptionsException :com.netflix.hystrix.exception.HystrixRuntimeException: PayClient#addOrModifyChargeManagement(AddOrModifyChargeManagement,Long) timed-out and no fallback available.

原因:调用等待时间超市,Hystrix因超时导致的熔断

hystrix

修改配置中心的timeoutInMilliseconds 改为10000, 即10秒

hystrix:
  threadpool:
    default:
      coreSize: 10  #并发执行的最大线程数,默认10
  command:
    paas-file:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 1000  #命令执行超时时间,默认1000ms

 将1000ms改为10000(10s)延长服务等待时间

其他方法:

ribbon

ribbon:
  MaxAutoRetries: 1 #最大重试次数,当Eureka中可以找到服务,但是服务连不上时将会重试,如果eureka中找不到服务则直接走断路器
  MaxAutoRetriesNextServer: 1 #切换实例的重试次数
  OkToRetryOnAllOperations: false  #对所有操作请求都进行重试,如果是get则可以,如果是post,put等操作没有实现幂等的情况下是很危险的,所以设置为false
  ConnectTimeout: 10000  #请求连接的超时时间
  ReadTimeout: 10000 #请求处理的超时时间

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐