一:Feign
创建FeignClient客户端
@FeignClient(name = "product")//www.1b23.com
public interface IProductClient {
@GetMapping("/msg")
String productMessage();
@PostMapping("/product/listForOrder")
List<ProductInfo> productInfoList(@RequestBody List<String> productIdList);
@PostMapping("/product/decreaseStock")
void decreaseStock(List<CartDto> cartDtoList);
}
@FeignClient(name = "product")
表示这个接口是Feign客户端,name表示应用名。
@PostMapping("/product/listForOrder")
和普通的Controller层调用写法一样,写的是调用的接口,这里的接口是指http://product//product/listForOrder
,和RestTemplate中的调用url一样。
使用FeignClient客户端。
在调用FeignClient的启动类上加上@EnableFeignClients
。
在其它类中注入IProductClient
接口,直接调用。
@Autowired
private IProductClient productClient;
@GetMapping("/getProductMsg")
public String getProductMsg(){
String response = productClient.productMessage();
log.info("response={}",response);
return response;
}
注意,有时候会报找不到IProductClient
这个bean,此时就需要添加扫描包,这个问题在调用时经常遇到。
@EnableFeignClients(basePackages = "com.springcloud.product.client")
二:ribbon
可以看到 Feign 调用步骤比较繁琐,并且传参数以及经过zuul 问题较多
再来看看ribbon
只需要在 implements 接口类里面引入一个 ribbon 均衡,再方法中调用即可
/**
* www.1b23.com
*/
@Service
@Transactional //开启事物
public class UsersServiceImpl implements UsersService {
@Autowired
private LoadBalancerClient loadBalancerClient;//ribbon负载均衡器
......
/**保存用户
* @param pd
* @throws Exception
*/
public void saveUser(PageData pd)throws Exception {
usersMapper.saveUser(pd);
pd.put("tokenKey", Tools.creatTokenKey("userAdd"));
LoadBalancerUtil.responseByPost(this.loadBalancerClient, "fh-dbsync", "user/add", pd); //请求数据库表同步微服务
}
}
"fh-dbsync" 是注册到eurake里面的服务名称,“user/add” 微服务的 RequestMapping 完整路径 “pd” 就是map,存放参数用的
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。