springcloud 实战 feign使用中遇到的相关问题

1.使用feign客户端调用其他微服务时,session没有传递成功,sessionId不一样。

/*** @author xbchenf* @date 2018-10-27 16:35:52* @description 通过拦截器,将head补上,避免session丢失*/
@Configuration
public class FeignConfiguration implements RequestInterceptor{private final Logger logger = LoggerFactory.getLogger(FeignConfiguration.class);@Overridepublic void apply(RequestTemplate template) {RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();if (requestAttributes == null) {return;}HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();Enumeration<String> headerNames = request.getHeaderNames();if (headerNames != null) {while (headerNames.hasMoreElements()) {String name = headerNames.nextElement();Enumeration<String> values = request.getHeaders(name);while (values.hasMoreElements()) {String value = values.nextElement();logger.warn("name:"+name+";value:"+value);template.header(name, value);}}}}
}

  

2.使用feign客户端调用其他微服务时,发送POST请求时,对象信息没有传递成功。

关键在于加上注解:@RequestBody

feign客户端:

@FeignClient(name = "mpmt-user")
public interface PersonFeignClient {@GetMapping("/feign/testGet/{id}")public ResponseEntity<JsonResult> testGet(@PathVariable(value = "id") Integer id);@PostMapping("/feign/testPost")public ResponseEntity<JsonResult> testPost(@RequestBody Person person);
}

  

微服务服务端:mpmt-user

@RestController
@RequestMapping("/feign")
public class FeignController {private final Logger logger = Logger.getLogger(FeignController.class);@GetMapping("/testGet/{id}")public ResponseEntity<JsonResult> testGet(@PathVariable(value = "id") Integer id,HttpServletRequest request) {JsonResult r = new JsonResult();try {logger.info("sessionid:"+request.getSession().getId());User user = (User)request.getSession().getAttribute("sessionUser");logger.info("userId:"+user.getId());r.setResult(user);r.setStatus("200");} catch (Exception e) {r.setResult(e.getClass().getName() + ":" + e.getMessage());r.setStatus("error");e.printStackTrace();}return ResponseEntity.ok(r);}/*** 添加用户* 提供给后端feign调用的接口,post请求都要使用@RequestBody ,包括feign中定义的接口* @param person* @return*/@PostMapping("/testPost")public ResponseEntity<JsonResult> testPost(@RequestBody Person person,HttpServletRequest request) {JsonResult r = new JsonResult();try {logger.info("sessionid:"+request.getSession().getId());User user = (User)request.getSession().getAttribute("sessionUser");logger.info("userId:"+user.getId());r.setResult(person);} catch (Exception e) {r.setResult(e.getClass().getName() + ":" + e.getMessage());r.setStatus("error");e.printStackTrace();}return ResponseEntity.ok(r);}}

3.使用feign客户端调用其他微服务时,报错超时:e=feign.RetryableException: Read timed out executing POST

ribbon.ReadTimeout=60000ribbon.ConnectTimeout=60000

转载于:https://www.cnblogs.com/brant/p/9864813.html

springcloud 实战 feign使用中遇到的相关问题相关推荐

  1. SpringCloud实战5-Feign声明式服务调用

    SpringCloud实战5-Feign声明式服务调用 在前面的文章中可以发现当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还 ...

  2. SpringCloud实战与原理---快速入门

    SpringCloud实战与原理 第一章  快速入门 1. 初始化工程 2. 启动Eureka注册中心 2.1 Eureka注册中心启动代码 2.2 启动Eureka注册中心 3. 注册Eureka客 ...

  3. [菜鸟SpringCloud实战入门]第九章:服务网关Zuul体验

    前言 欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud. 本系列适合有一定Java以及Sp ...

  4. [菜鸟SpringCloud实战入门]第五章:熔断器Hystrix的使用 + 可视化监控Hystrix Dashboard和Turbine

    前言 欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud. 本系列适合有一定Java以及Sp ...

  5. Java微服务——SpringCloud实战篇2:整合Gateway、Config、Bus

    Java微服务--SpringCloud实战篇2:整合Gateway.Config.Bus 如果小伙伴在阅读下列内容时,对于编写SpringCloud项目是零基础,那么请先阅读小编的另一篇博文:&qu ...

  6. [菜鸟SpringCloud实战入门]第七章:配置中心客户端主动刷新机制 + 配置中心服务化和高可用改造...

    前言 欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud. 本系列适合有一定Java以及Sp ...

  7. SpringCloud实战小贴士:版本依赖关系

    2019独角兽企业重金招聘Python工程师标准>>> 去年在博客上连载了<Spring Cloud构建微服务架构>的系列博文,虽然这部分内容得到了不少关注者们的支持,但 ...

  8. SpringCloud与Feign

    SpringCloud只Feign如何实现负载均衡: 简介 Feign是一个声明式WebService客户端.使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口, ...

  9. SpringCloud 中 Feign 核心原理,简单易懂!

    目录 SpringCloud 中 Feign 核心原理 Feign远程调用的基本流程 Feign 远程调用的重要组件 Feigh 远程调用的执行流程 SpringCloud 中 Feign 核心原理 ...

最新文章

  1. Vim与clang-format
  2. centos7.9更改root账号密码
  3. Flink SQL Client读Kafka+流计算(DDL方式+代碼嵌入DDL/SQL方式)
  4. 什么是真正的程序员?
  5. 在WildFly上将JPA和CDI Bean与骆驼一起使用
  6. java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...
  7. 添加icon_在zotero中添加百度学术、中国知网的文章检索引擎
  8. 瑶光TechTalk | 迈向多维智慧,智能画像与预测算法剖析
  9. 电脑安装python3.74_在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
  10. Jquery Easyui Datagrid创建代码
  11. 常见的遍历数组和对象的方法
  12. 【干货】python正则表达式应用笔记
  13. PaddleNLP Taskflow
  14. 根据输入的银行卡号识别出银行名称并显示
  15. CAD中插入外部参照字体会变繁体_CAD发给客户没字体怎么办?快速打包外部参照、字体、打印样式...
  16. 将长表格图片转Excel表格
  17. 【MYSQL】学习笔记
  18. 高德地图哪个语音包最好_高德地图VS百度地图,哪个更靠谱?
  19. 如果VxRail要发朋友圈
  20. Linux编程技术总结

热门文章

  1. 车载安卓导航一键root_听说比Carplay牛 率先体验华为HiCar车载互联
  2. java 2d svg_SVG 2D入门1 - SVG综述
  3. jsp 连接mysql空指针_java jdbc与mysql为什么连接不上并且抛出空指针异常?
  4. 天翼云从业认证(1.2)存储的概念、体系结构、块存储、对象存储、文件存储以及 RAID 磁盘管理技术
  5. myeclipse优化
  6. Vue+Openlayers实现显示图片并分优先级多图层加载
  7. Winform中怎样重写窗体关闭事件实现验证密码通过才能关闭窗体
  8. Windows下curl的下载与使用
  9. Electron中 提示:Uncaught ReferenceError: process is not defined
  10. Angular中的路由配置、路由重定向、默认选中路由