标签:方案 ctp cloud tpc 依赖 不用 bsp tar 编写
feign和ribbon是Spring Cloud的Netflix中提供的两个实现软负载均衡的组件,Ribbon和Feign都是用于调用其他服务的,方式不同。Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式。
将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建 http 请求。
不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致
1.启动类使用的注解不同,Ribbon 用的是@RibbonClient,Feign 用的是@EnableFeignClients。
2.服务的指定位置不同,Ribbon 是在@RibbonClient 注解上声明,Feign 则是在定义抽象方法的接口中使用@FeignClient 声明。
3.调用方式不同,Ribbon 需要自己构建 http 请求,模拟 http 请求然后使用 RestTemplate 发送给其他服务,步骤相当繁琐。
个人觉得主要原因是这个
Feign
Feign 是在 Ribbon 的基础上进行了一次改进,是一个使用起来更加方便的 HTTP 客户端。采用接口的方式, 只需要创建一个接口,然后在上面添加注解即可 ,将需要调用的其他服务的方法定义成抽象方法即可, 不需要自己构建 http 请求。然后就像是调用自身工程的方法调用,而感觉不到是调用远程方法,使得编写 客户端变得非常容易。
Ribbon
Ribbon 是一个基于 HTTP 和 TCP 客户端 的负载均衡的工具。它可以 在客户端 配置 RibbonServerList(服务端列表),使用 HttpClient 或 RestTemplate 模拟 http 请求,步骤相对繁琐。
<!-- 服务之间http调用, 引入feign --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
在启动类增加注解
@EnableFeignClients
我们即将创建的这个工程, 专门用来管理维护feign调用请求
因为该工程式一个普通的jar 不需要打可执行的jar
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId> 5
<artifactId>maven‐jar‐plugin</artifactId>
</plugin>
</plugins>
</build>
@FeignClient(name="product‐center") publicinterfaceProductCenterFeignApi{ /** * 声明式接口,远程调用http://product‐center/selectProductInfoById/{productNo} * @param productNo * @return */ @RequestMapping("/selectProductInfoById/{productNo}") ProductInfo selectProductInfoById(@PathVariable("productNo") String productNo); }
在order项目中配置
as
标签:方案 ctp cloud tpc 依赖 不用 bsp tar 编写
原文地址:https://www.cnblogs.com/ITPower/p/13347194.html