修改security服务feign调用失败的重试规则

This commit is contained in:
ajaxfan
2021-05-17 10:59:02 +08:00
parent 20e99edcd2
commit e1d8fef83f
3 changed files with 12 additions and 12 deletions

View File

@ -22,7 +22,7 @@ public interface UserCenterClient {
* @param fileId
* @return
*/
@RequestMapping(method = RequestMethod.GET, value = "v1/userinfo/get")
@RequestMapping(method = RequestMethod.GET, value = "v1/userinfo/get1")
SecurityUser getUserInfo();
}

View File

@ -2,7 +2,6 @@ package com.chinaunicom.mall.ebtp.cloud.security.starter.config;
import static feign.FeignException.errorStatus;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@ -34,6 +33,11 @@ public class FeignClientConfiguration {
int status = response.status();
if (status >= 400 && status <= 500) {// 客户端异常启用feign的重试机制
try {
Thread.sleep(3000);// 设定重试延时
} catch (InterruptedException e) {
log.error(e.getMessage());
}
return new RetryableException(response.status(), exception.getMessage(),
response.request().httpMethod(), exception, retryAfter(), response.request());
}
@ -42,14 +46,10 @@ public class FeignClientConfiguration {
}
/**
* 延迟 n 秒后重试
*
* @return
* @return 请求重试
*/
private Date retryAfter() {
Calendar cal = GregorianCalendar.getInstance();
return cal.getTime();
return GregorianCalendar.getInstance().getTime();
}
}

View File

@ -103,9 +103,6 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
private Authentication getAuthentication(final String token, final String currentRoleCode) {
SecurityUser securityUser = client.getUserInfo();
log.info("TokenAuthenticationFilter: token [{}]", token);
log.info("TokenAuthenticationFilter: userid [{}]", securityUser.getUserId());
if (Objects.isNull(securityUser)) {// 对象为空, 则说明网络异常feign已熔断
throw new RemoteTimeoutException("90500");
}
@ -114,6 +111,9 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
throw new AccessDeniedException("90403");
}
log.info("TokenAuthenticationFilter: token [{}]", token);
log.info("TokenAuthenticationFilter: userid [{}]", securityUser.getUserId());
// 根据当前角色设定权限列表
List<RoleCodeAuthority> authorities = Optional.ofNullable(securityUser.getAuthorityList()).map(list -> {
return list.stream().filter(auth -> StringUtils.equals(auth.getRoleCode(), currentRoleCode))