@Slf4j
@Configuration(proxyBeanMethods = false)
public class FeignLoadBalancedConfiguration {
@Bean
public LoadBalancerFeignClient feignClient(CachingSpringLoadBalancerFactory cachingFactory,
SpringClientFactory clientFactory) {
return new LoadBalancerFeignClient(new Client.Default(null, null), cachingFactory,
clientFactory) {
@Override
public Response execute(Request request, Request.Options options) {
Map<String, Collection<String>> headers = new HashMap<>(2);
headers.put("content-type", Collections.singletonList("application/json"));
headers.put("transfer-encoding", Collections.singletonList("chunked"));
Response.Builder builder = Response.builder()
.status(200).headers(headers)
.request(request);
try {
Response resp = super.execute(request, options);
if (Objects.equals(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, resp.status())) {
log.error("服务内部错误, req: {}, data: {}", request.url(),
new String(Optional.ofNullable(request.body()).orElse(new byte[]{}, StandardCharsets.UTF_8));
return builder.body(JSONObject.toJSONBytes(RestResult.fail("服务内部错误"))).build();
}
return resp;
} catch (Exception e) {
log.error("服务不可用, req: {}, data: {}", request.url(),
new String(Optional.ofNullable(request.body()).orElse(new byte[]{}, StandardCharsets.UTF_8));
return builder.body(JSONObject.toJSONBytes(RestResult.fail("服务不可用"))).build();
}
}
};
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有