日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/3/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springcloud 实战 feign使用中遇到的相关问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?springcloud 實戰(zhàn) 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客戶端調用其他微服務時,發(fā)送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

轉載于:https://www.cnblogs.com/brant/p/9864813.html

總結

以上是生活随笔為你收集整理的springcloud 实战 feign使用中遇到的相关问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。