@Scheduled调Feignclient调不了
原因:
用 postman 请求接口的时候,是有一个 webContext 的(就是 HTTP 请求信息),具体参数在HttpServletRequest 等类里面,feign 接口进行调用的时候,会复制 webContext 里面的参数,发起请求; 定时任务并不是 HTTP 请求发起的,所以 feign 取不到 webContext
解决:
非web调用feign,RequestContextHolder.getRequestAttributes()是null的,所以需要在空的情况赋值一次
代码如下:
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
if (servletRequestAttributes == null) {
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(new MockHttpServletRequest()));
}
正文到此结束
- 本文标签: java springboot springcloud
- 版权声明: 本站原创文章,于2023年01月03日由wzbjsz发布,转载请注明出处