这篇文章主要讲解了基于springcloud模拟RPC调用的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
<强>假装简介强>
假装是一个声明式的Web服务客户端,它能够让Web服务客户端的编写变得更加容易(你只需创建一个接口,并在接口上添加相应注解即可)。除了假装自带的注解外它还支持jax - rs注解,springcloud又为假装增加了对SpringMVC注解的支持,同时为了能够使用和Spring Web中默认使用的相同的httpMessageConverter, springcloud集成了丝带和尤里卡,用来在使用假装时能够为其提供一个负载均衡的HTTP客户端。
总起来说,假装具有如下特性:
1。可插拔的注解支持,包括假装注解和jax - rs注解;
2。支持可插拔的HTTP编码器和解码器;
3。支持Hystrix和它的后备;
4。支持丝带的负载均衡;
5。支持HTTP请求和响应的压缩。
接下来我们将通过对上一章《客户端负载均衡(丝带)》中的信息中心项目进行改造,演示如何使用假装。
信息中心改造
<强>引入假装依赖强>
由于假装依赖中默认包含了丝带,所以只需要在砰的一声。xml文件中引入假装依赖即可,丝带依赖无需重复引入:
& lt; parent> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-parent & lt; version> 2.0.6.RELEASE & lt;/parent> & lt; properties> & lt; spring-cloud.version> Finchley.SR2 & lt;/properties> & lt; dependencies> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-web & lt;/dependency> & lt; !——Eureka-Client依赖——比; & lt; dependency> & lt; groupId> org.springframework.cloud & lt; artifactId> spring-cloud-starter-netflix-eureka-client & lt;/dependency> & lt; !——假装依赖——比; & lt; dependency> & lt; groupId> org.springframework.cloud & lt; artifactId> spring-cloud-starter-openfeign & lt;/dependency> & lt;/dependencies> & lt; dependencyManagement> & lt; dependencies> & lt; !——SpringCloud版本控制依赖——比; & lt; dependency> & lt; groupId> org.springframework.cloud & lt; artifactId> spring-cloud-dependencies & lt; version> $ {spring-cloud.version} & lt;/version> & lt; type> pom & lt; scope> import & lt;/dependency> & lt;/dependencies> & lt;/dependencyManagement>
<强>修改启动类
强>
在MessageCenterApplication启动类上增加@EnableFeignClients注解:
进口org.springframework.boot.WebApplicationType; 进口org.springframework.boot.autoconfigure.SpringBootApplication; 进口org.springframework.boot.builder.SpringApplicationBuilder; 进口org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableFeignClients 公开课MessageCenterApplication { 公共静态void main (String [] args) { 了对新SpringApplicationBuilder (MessageCenterApplication.class) web这类(WebApplicationType.SERVLET) .run (args); } }
这里我们在启动类中增加了@EnableFeignClients注解,用来开启假装客户端发现功能。
如果你的假装客户端类文件不在春天的包扫描路径之中,可以在@EnableFeignClients注解中对假装客户端的包路径进行指定。
@SpringBootApplication @EnableFeignClients (basePackages=癱om.pengjunlee.client。* *“) 公开课MessageCenterApplication { 公共静态void main (String [] args) { 了对新SpringApplicationBuilder (MessageCenterApplication.class) web这类(WebApplicationType.SERVLET) .run (args); } }
<>强创建假装客户端
强>
对外提供服务的HTTP接口定义在MessageController
@RestController @RequestMapping (“/api/v1/msg") 公开课MessageController { @ value (“$ {server.port}“) 私人字符串端口;/* * *返回一条消息 */@GetMapping (“/get") 公共字符串getMsg () { 返回“这消息发送端口:“+端口; } }
接下来,我们在消费端信息中心中为它创建一个假装客户端。新建一个接口取名MessageServiceClient,并在上面添加@FeignClient注,解完整代码如下: