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

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

  1. /**
  2. * @author xbchenf
  3. * @date 2018-10-27 16:35:52
  4. * @description 通过拦截器,将head补上,避免session丢失
  5. */
  6. @Configuration
  7. public class FeignConfiguration implements RequestInterceptor{
  8. private final Logger logger = LoggerFactory.getLogger(FeignConfiguration.class);
  9. @Override
  10. public void apply(RequestTemplate template) {
  11.  
  12. RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
  13. if (requestAttributes == null) {
  14. return;
  15. }
  16. HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
  17. Enumeration<String> headerNames = request.getHeaderNames();
  18. if (headerNames != null) {
  19. while (headerNames.hasMoreElements()) {
  20. String name = headerNames.nextElement();
  21. Enumeration<String> values = request.getHeaders(name);
  22. while (values.hasMoreElements()) {
  23. String value = values.nextElement();
  24. logger.warn("name:"+name+";value:"+value);
  25. template.header(name, value);
  26. }
  27. }
  28. }
  29.  
  30. }
  31. }

  

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

关键在于加上注解:@RequestBody

feign客户端:

  1. @FeignClient(name = "mpmt-user")
  2. public interface PersonFeignClient {
  3.  
  4. @GetMapping("/feign/testGet/{id}")
  5. public ResponseEntity<JsonResult> testGet(@PathVariable(value = "id") Integer id);
  6.  
  7. @PostMapping("/feign/testPost")
  8. public ResponseEntity<JsonResult> testPost(@RequestBody Person person);
  9. }

  

微服务服务端:mpmt-user

  1. @RestController
  2. @RequestMapping("/feign")
  3. public class FeignController {
  4.  
  5. private final Logger logger = Logger.getLogger(FeignController.class);
  6.  
  7. @GetMapping("/testGet/{id}")
  8. public ResponseEntity<JsonResult> testGet(@PathVariable(value = "id") Integer id,HttpServletRequest request) {
  9. JsonResult r = new JsonResult();
  10. try {
  11. logger.info("sessionid:"+request.getSession().getId());
  12. User user = (User)request.getSession().getAttribute("sessionUser");
  13. logger.info("userId:"+user.getId());
  14. r.setResult(user);
  15. r.setStatus("200");
  16. } catch (Exception e) {
  17. r.setResult(e.getClass().getName() + ":" + e.getMessage());
  18. r.setStatus("error");
  19. e.printStackTrace();
  20. }
  21. return ResponseEntity.ok(r);
  22. }
  23.  
  24. /**
  25. * 添加用户
  26. * 提供给后端feign调用的接口,post请求都要使用@RequestBody ,包括feign中定义的接口
  27. * @param person
  28. * @return
  29. */
  30. @PostMapping("/testPost")
  31. public ResponseEntity<JsonResult> testPost(@RequestBody Person person,HttpServletRequest request) {
  32. JsonResult r = new JsonResult();
  33. try {
  34. logger.info("sessionid:"+request.getSession().getId());
  35. User user = (User)request.getSession().getAttribute("sessionUser");
  36. logger.info("userId:"+user.getId());
  37. r.setResult(person);
  38. } catch (Exception e) {
  39. r.setResult(e.getClass().getName() + ":" + e.getMessage());
  40. r.setStatus("error");
  41.  
  42. e.printStackTrace();
  43. }
  44. return ResponseEntity.ok(r);
  45. }
  46.  
  47. }

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

  1. ribbon.ReadTimeout=60000
    ribbon.ConnectTimeout=60000

springcloud 实战 feign使用中遇到的相关问题的更多相关文章

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

    在前面的文章中可以发现当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率 ...

  2. springcloud 实战 网关zuul使用中遇到的相关问题

    springcloud 实战  网关zuul使用中遇到的相关问题 1.网关zuul使用时,跨域问题在网关中配置pre过滤器: response.setHeader("Access-Contr ...

  3. ②SpringCloud 实战:引入Feign组件,完善服务间调用

    这是SpringCloud实战系列中第二篇文章,了解前面第一篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 简介 Feign 是一个声明式的 RE ...

  4. ⑦SpringCloud 实战:引入Sleuth组件,完善服务链路跟踪

    这是SpringCloud实战系列中第7篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...

  5. ③SpringCloud 实战:使用 Ribbon 客户端负载均衡

    这是SpringCloud实战系列中第三篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...

  6. ④SpringCloud 实战:引入Hystrix组件,分布式系统容错

    这是SpringCloud实战系列中第4篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...

  7. ⑤SpringCloud 实战:引入Zuul组件,开启网关路由

    这是SpringCloud实战系列中第4篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...

  8. ⑥SpringCloud 实战:引入gateway组件,开启网关路由功能

    这是SpringCloud实战系列中第4篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...

  9. SpringCloud实战之初级入门(二)— 服务注册与服务调用

    目录 1.环境介绍 2.服务提供 2.1 创建工程 2.2 修改配置文件 2.3 修改启动文件 2.5 亲测注意事项 3.服务调用 3.1 创建工程 3.2 修改配置文件 3.3 修改启动文件 3.4 ...

随机推荐

  1. python unittest框架理解与总结(二)

    unittest基本原理: ♦整个平台的搭建使用的是python的unittest测试框架,这里简单介绍下unittest模块的简单应用. ♦unittest是python的标准测试库,相比于其他测试 ...

  2. Unicode字符串索引

    一.目标 在通讯录中,我们有很多联系人,需要把这些联系人进行索引.对于每一个索引项对应的若干字符串,需要对这些字符串进行排序. 需要解决两个问题: 如何确定某个汉字应该被哪个字符索引? 某个索引项对应 ...

  3. JSP页面开发知识点整理

    刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法htt ...

  4. 解决无法运行Terminator出现以下问题: File "/usr/bin/terminator"...SyntaxError: invalid syntax

    在安装或者启动Terminator时可能出现这个问题: lin@Dev:~$ terminator File "/usr/bin/terminator", line 123 exc ...

  5. SPI 用户空间的读写操作

    spi_device 虽然用户空间不需要直接用到spi_device结构体,但是这个结构体和用户空间的程序有密切的关系,理解它的成员有助于理解SPI设备节点的IOCTL命令,所以首先来介绍它.在内核中 ...

  6. PigGo+Github图床,编写本地markdown

    平时用markdown做笔记比较多,比较正式完整一点的笔记会用CmdMarkdown,编写过程贴图比较方便,但是有时候需要做本地的笔记,会用typora,typora虽然好用,但是贴图比较麻烦,这里可 ...

  7. [HNOI2019]多边形

    Luogu5288 注意:n边形里共有n-3条边 最优步数=不与n相连的边数,关键是方案数. 按照处理顺序可以转化为树形结构即二叉树森林,转移方案数用组合数即可 关键是快速处理修改. 1.最优解减少一 ...

  8. windows 下 pyinstaller distutils not included with latest virtualenv (16.4.0)

    起因 因为windows下python3.7.2内置venv虚拟环境下pyinstaller错误问题,切换virtualenv但是发现最新版本又有其他问题 - -! ModuleNotFoundErr ...

  9. Linux快速查看某条命令的版本和存放的位置(ls -l `which mvn`)

    输入: ls -l `which mvn` 如图:

  10. 高性能web服务器(热死你)Resin Linux的安装、配置、部署,性能远超Nginx支持Java、PHP等

    高性能web服务器(热死你)Resin Linux的安装.配置.部署,性能远超Nginx支持Java.PHP等 一.    安装resin 1.  下载resin: 下载地址:http://cauch ...