客户端远程调用Feign (2)

使用 @RequestParam

@FeignClient(name = "user-center") public interface ITestUserCenterFeignClient { @RequestMapping(value = "/users/q",method = RequestMethod.GET) public UserDTO query(@RequestParam("id") Long id,@RequestParam("name") String name); }

使用Map构建,(不推荐)

@FeignClient(name = "user-center") public interface ITestUserCenterFeignClient { @RequestMapping(value = "/users/q",method = RequestMethod.GET) public UserDTO query(@RequestParam Map<String,Object> conditions); }

注意:这种方式不建议使用。主要是因为可读性不好,而且如果参数为空的时候会有一些问题,例如map.put("username", null); 会导致user-center 服务接收到的username是"" ,而不是null。

Post

服务提供者方法

@PostMapping("/create") public User createUser(@RequestBody User user){ return null; }

服务调用者

@FeignClient(name = "user-center") public interface ITestUserCenterFeignClient { @RequestMapping(value = "/users/q",method = RequestMethod.POST) public UserDTO query(@RequestBody UserDTO user); } Feign脱离服务注册/Ribbon调用 @FeignClient(name = "xxxxx",url = "http://www.baidu.com") public interface ITestBaiduFeignClient { @GetMapping("") public String getBaidu(); } Feign 性能优化 使用连接池 httpClient

加依赖

<!--Feign 性能优化,需要使用连接池,引入依赖--> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> </dependency>

加注解(不需要)

改配置

httpclient: # 为feign启用 apache httpclient 做请求,而不使用默认的urlconection enabled: true # feign 最大连接数 max-connections: 200 # feign 单个路径请求的最大连接数 max-connections-per-route: 50 okHttp

加依赖

<!--Feign 性能优化,需要使用连接池,引入依赖--> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactId> </dependency>

加注解(不需要)

改配置

httpclient: # 为feign启用 apache httpclient 做请求,而不使用默认的urlconection #enabled: true # feign 最大连接数 max-connections: 200 # feign 单个路径请求的最大连接数 max-connections-per-route: 50 okhttp: enabled: true 合理使用Feign日志

生产环境使用Logger.Level.BASIC

RestTemplate RestTemplate VS. Feign

客户端远程调用Feign

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzyzs.html