springcloud 实战 feign使用中遇到的相关问题
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);
- @Override
- public 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=60000
ribbon.ConnectTimeout=60000
springcloud 实战 feign使用中遇到的相关问题的更多相关文章
- SpringCloud实战-Feign声明式服务调用
在前面的文章中可以发现当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率 ...
- springcloud 实战 网关zuul使用中遇到的相关问题
springcloud 实战 网关zuul使用中遇到的相关问题 1.网关zuul使用时,跨域问题在网关中配置pre过滤器: response.setHeader("Access-Contr ...
- ②SpringCloud 实战:引入Feign组件,完善服务间调用
这是SpringCloud实战系列中第二篇文章,了解前面第一篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 简介 Feign 是一个声明式的 RE ...
- ⑦SpringCloud 实战:引入Sleuth组件,完善服务链路跟踪
这是SpringCloud实战系列中第7篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- ③SpringCloud 实战:使用 Ribbon 客户端负载均衡
这是SpringCloud实战系列中第三篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- ④SpringCloud 实战:引入Hystrix组件,分布式系统容错
这是SpringCloud实战系列中第4篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- ⑤SpringCloud 实战:引入Zuul组件,开启网关路由
这是SpringCloud实战系列中第4篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- ⑥SpringCloud 实战:引入gateway组件,开启网关路由功能
这是SpringCloud实战系列中第4篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- SpringCloud实战之初级入门(二)— 服务注册与服务调用
目录 1.环境介绍 2.服务提供 2.1 创建工程 2.2 修改配置文件 2.3 修改启动文件 2.5 亲测注意事项 3.服务调用 3.1 创建工程 3.2 修改配置文件 3.3 修改启动文件 3.4 ...
随机推荐
- python unittest框架理解与总结(二)
unittest基本原理: ♦整个平台的搭建使用的是python的unittest测试框架,这里简单介绍下unittest模块的简单应用. ♦unittest是python的标准测试库,相比于其他测试 ...
- Unicode字符串索引
一.目标 在通讯录中,我们有很多联系人,需要把这些联系人进行索引.对于每一个索引项对应的若干字符串,需要对这些字符串进行排序. 需要解决两个问题: 如何确定某个汉字应该被哪个字符索引? 某个索引项对应 ...
- JSP页面开发知识点整理
刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法htt ...
- 解决无法运行Terminator出现以下问题: File "/usr/bin/terminator"...SyntaxError: invalid syntax
在安装或者启动Terminator时可能出现这个问题: lin@Dev:~$ terminator File "/usr/bin/terminator", line 123 exc ...
- SPI 用户空间的读写操作
spi_device 虽然用户空间不需要直接用到spi_device结构体,但是这个结构体和用户空间的程序有密切的关系,理解它的成员有助于理解SPI设备节点的IOCTL命令,所以首先来介绍它.在内核中 ...
- PigGo+Github图床,编写本地markdown
平时用markdown做笔记比较多,比较正式完整一点的笔记会用CmdMarkdown,编写过程贴图比较方便,但是有时候需要做本地的笔记,会用typora,typora虽然好用,但是贴图比较麻烦,这里可 ...
- [HNOI2019]多边形
Luogu5288 注意:n边形里共有n-3条边 最优步数=不与n相连的边数,关键是方案数. 按照处理顺序可以转化为树形结构即二叉树森林,转移方案数用组合数即可 关键是快速处理修改. 1.最优解减少一 ...
- windows 下 pyinstaller distutils not included with latest virtualenv (16.4.0)
起因 因为windows下python3.7.2内置venv虚拟环境下pyinstaller错误问题,切换virtualenv但是发现最新版本又有其他问题 - -! ModuleNotFoundErr ...
- Linux快速查看某条命令的版本和存放的位置(ls -l `which mvn`)
输入: ls -l `which mvn` 如图:
- 高性能web服务器(热死你)Resin Linux的安装、配置、部署,性能远超Nginx支持Java、PHP等
高性能web服务器(热死你)Resin Linux的安装.配置.部署,性能远超Nginx支持Java.PHP等 一. 安装resin 1. 下载resin: 下载地址:http://cauch ...