
Spring Cloud系列_11 Feign负载均衡、请求传参
发布日期:2021-05-07 01:21:35
浏览次数:7
分类:技术文章
本文共 3945 字,大约阅读时间需要 13 分钟。
Feign的负载均衡
Feign封装了Ribbon,所以也可以使用Ribbon负载均衡
全局:
配置类中注入负载均衡规则:随机,什么都不配置默认使用轮询
@Configurationpublic class RestTemplateConfig { @Bean public RandomRule randomRule(){ return new RandomRule(); }}
启动之后能看到结果
{"id":1,"orderNo":"order01","orderAddress":"address","totalPrice":200,"productList":[{"id":1,"name":"产品1-7073","num":1,"price":100},{"id":2,"name":"产品2-7073","num":2,"price":200},{"id":3,"name":"产品2-7073","num":3,"price":300}]}
{"id":1,"orderNo":"order01","orderAddress":"address","totalPrice":200,"productList":[{"id":1,"name":"产品1-7074","num":1,"price":100},{"id":2,"name":"产品2-7074","num":2,"price":200},{"id":3,"name":"产品2-7074","num":3,"price":300}]}
返回的数据显示,7073和7074两个服务随机请求,注意看“产品2-7073”和“产品2-7074”
局部
配置:
service-provider: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
Feign的请求传参
GET
使用@Pathvariable和@RequestParam注解接收参数
还是使用service-provider做演示,方便起见就不搞集群了。
增加一个根据ID查询产品信息的接口
ProductServiceImpl.java
@Override public Product selectProductById(Long id) { return new Product(id,"产品"+id+"-7073",1,new BigDecimal("100")); }
ProductController.java
@GetMapping(value = "getProductsById/{id}") public Product getProductsById(@PathVariable("id") Long id){ return productService.selectProductById(id); }
然后是consumer-service-feign-7100,增加一个接口
ProductService.java
@GetMapping(value = "/provider/getProductsById/{id}") Product getProductsById(@PathVariable("id") Long id);
OrderServiceImpl.java
@Override public Order getById(Long id) { return new Order(id,"order01","address",new BigDecimal("200"), Collections.singletonList(productService.getProductsById(id))); }
OrderController.java
@GetMapping(value = "getById/{id}") public Order getById(@PathVariable("id") Long id){ return orderService.getById(id); }
POST
使用@requestBody注解接收参数
还是使用service-provider做演示,增加了一个POST根据ID获取和添加Product的接口
ProductServiceImpl.java
@Override public Product selectProductByIdWithPost(Long id) { return new Product(id,"产品"+id+"-7073",1,new BigDecimal("100")); } @Override public Map
ProductController.java
@PostMapping(value = "getProductsByIdWithPost") public Product selectProductByIdWithPost(@RequestBody Product product){ return productService.selectProductByIdWithPost(product.getId()); } @PostMapping(value = "create") public MapgetProductsById(@RequestBody Product product){ return productService.createProduct(product); }
然后是consumer-service-feign-7100,增加两个对应的接口
ProductService.java
@PostMapping(value = "/provider/getProductsByIdWithPost") Product selectProductByIdWithPost(Product product); @PostMapping(value = "/provider/create") MapcreateProduct(Product product);
OrderServiceImpl.java
@Override public Order selectProductByIdWithPost(Product product) { return new Order(product.getId(),"order01","address",new BigDecimal("200"), Collections.singletonList(productService.selectProductByIdWithPost(product))); } @Override public MapcreateProduct(Product product) { return productService.createProduct(product); }
OrderController.java
@PostMapping(value = "getProductsByIdWithPost") public Order selectProductByIdWithPost(@RequestBody Product product){ return orderService.selectProductByIdWithPost(product); } @PostMapping(value = "create") public MapgetProductsById(@RequestBody Product product){ return orderService.createProduct(product); }
测试样例
POST http://localhost:7100/order/getProductsByIdWithPostContent-Type: application/json{"id": 2}###POST http://localhost:7100/order/createContent-Type: application/json{"id": 2,"name": "name2"}
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年03月31日 09时36分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
6、ShardingSphere 之 读写分离
2019-03-03
C++ STL
2019-03-03
解方程
2019-03-03
练习赛 位运算 思维 思维
2019-03-03
Netty 粘包 拆包 | 史上最全解读
2019-03-03
【调剂】其它计算机/软件调剂信息 20.4.21
2019-03-03
【调剂】华侨大学媒体分析与数据挖掘小组招收学硕调剂生
2019-03-03
【调剂】211云南大学2020年硕士研究生招生调剂通知
2019-03-03
2021考研数学,如何利用错题高效拿分?
2019-03-03
【调剂】上海应用技术大学2021年硕士研究生招生考试调剂信息
2019-03-03
2021QS计算机专业排名发布:MIT斯坦福霸榜,清华北大进入前20
2019-03-03
JavaScript学习手册(45)
2019-03-03
【纪中2020.5.06日】模拟赛题解
2019-03-03
eclipse中server location灰色解决
2019-03-03
idea 写web项目图片不显示
2019-03-03
CSS浮动属性
2019-03-03
SVM多类识别
2019-03-03
svn 撤销已提交的错误修改
2019-03-03