服务间的通信 RestTemplate和Feign
1.RestTemplate
Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android或者第三方服务商都是使用 RestTemplate 请求 restful 服务。
定义一个RestTemplate的Bean,设置成LoadBalanced
@Configuration
public class RestTemplateConfiguration { @Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
调用时注入这个bean
@Autowired
private RestTemplate restTemplate; public String getProduct(string productId) {
String response=restTemplate.getForObject("http://Product/getProduct/" + productId, String.class); //Product为应用名字 return response; }
2.Fegin
Feign是一种负载均衡的HTTP客户端, 使用Feign调用API就像调用本地方法一样,从避免了 调用目标微服务时,需要不断的解析/封装json 数据的繁琐。
Fegin是一个声明似的web服务客户端,它使得编写web服务客户端变得更加容易。使用Fegin创建一个接口并对它进行注解。它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
启动类上添加注解 @EnableFeignClients
@EnableFeignClients(basePackages = "cn.qin.client") //扫描包
定义接口
@FeignClient(name= "Product") //应用名称
public interface ProductClient { @GetMapping("/getProduct")
public String getProduct(String productId); }
在调用的地方 注入
@Autowired
private ProductClient client; @GetMapping(value = "getProduct")
public String getProduct(String productId) {
return client.getProduct(productId);
}
服务间的通信 RestTemplate和Feign的更多相关文章
- SpringCloud实现服务间调用(RestTemplate方式)
		
上一篇文章<SpringCloud搭建注册中心与服务注册>介绍了注册中心的搭建和服务的注册,本文将介绍下服务消费者调用服务提供者的过程. 本文目录 一.服务调用流程二.服务提供者三.服务消 ...
 - .NET Core使用gRPC打造服务间通信基础设施
		
一.什么是RPC rpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制. 利用这种传输机制,不同进程(或服务)间像调用本地进程中 ...
 - 使用gRPC打造服务间通信基础设施
		
一.什么是RPC rpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制. 利用这种传输机制,不同进程(或服务)间像调用本地进程中 ...
 - eShopOnContainers 看微服务⑤:消息通信
		
1.消息通信 传统的单体应用,组件间的调用都是使用代码级的方法函数.比如用户登录自动签到,增加积分.我们可以在登录函数调用积分模块的某个函数,为了解耦我们使用以来注入并放弃new Class()这种方 ...
 - 微服务6:通信之网关 Ready
		
★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 1 概述 回顾下前面几 ...
 - SpringCloud使用Feign实现服务间通信
		
SpringCloud的服务间通信主要有两种办法,一种是使用Spring自带的RestTemplate,另一种是使用Feign,这里主要介绍后者的通信方式. 整个实例一共用到了四个项目,一个Eurek ...
 - Spring Cloud netflix feign【服务间通信】
		
一.简介 1,进程间通讯的本质是交换消息 2,服务间通信的两种方式 (1)RESTFul风格 (2)RPC风格 (3)两种风格的比较 3.基于RESTFul风格服务调用模型 4.基于Spring Cl ...
 - 浅谈服务间通信【MQ在分布式系统中的使用场景】
		
解决的问题 一项技术的产生必然是为了解决问题而生,了解了一项技术解决的问题,就能够很轻松的理解这项技术的设计根本,从而更好地理解与使用这项技术. 消息中间件和RPC从根本上来说都是为了解决分布式系统的 ...
 - 007. 服务间通信 RPC & REST over HTTP(s) & 消息队列
		
服务间通信 服务间通信的几种方式: RPC.REST over HTTP(s).消息队列. https://www.jianshu.com/p/2a01d4383d0b RPC https://bl ...
 
随机推荐
- ngnix之笔记
			
############################################################################# 我们在使用的时候会遇到很多的恶意IP攻击,这 ...
 - IPC 进程间通信方式——信号量
			
信号量 本质上是共享资源的数目,用来控制对共享资源的访问. 用于进程间的互斥和同步 每种共享资源对应一个信号量,为了便于大量共享资源的操作引入了信号量集,可对多对信号量一次性操作.对信号量集中所有的操 ...
 - SpringBoot中注入RedisTemplate实例异常解决(转)
			
最近,在项目开发过程中使用了RedisTemplate,进行单元测试时提示“Field redisTemplate in com.example.demo1.dao.RedisDao required ...
 - CodeForces 788A - Functions again [ DP ]
			
反着求一遍最大连续子序列(前项依赖) #include <bits/stdc++.h> using namespace std; #define LL long long ; int n; ...
 - python 访问列表中的值
			
#!/usr/bin/python list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5, 6, 7 ] print ...
 - 从零开始入门 K8s | Kubernetes 调度和资源管理
			
作者 | 子誉 蚂蚁金服高级技术专家 关注"阿里巴巴云原生"公众号,回复关键词"入门",即可下载从零入门 K8s 系列文章 PPT. Kubernetes 调 ...
 - js基础( js嵌入方式、输出语句)
			
s现在的作用 1.验证表单(以前的网速慢) 2.页面特效 (PC端的网页效果) 3.移动端 (移动 web 和app) 4.异步和服务器交互(ajax) 5.服务器端开发 (nodejs) ...
 - [CSP-S模拟测试]:任务分配(最短路+贪心+DP)
			
题目传送门(内部题149) 输入格式 每个测试点第一行为四个正整数$n,b,s,m$,含义如题目所述. 接下来$m$行,每行三个非负整数$u,v,l$,表示从点$u$到点$v$有一条权值为$l$的有向 ...
 - java动态生成HTML文件
			
在eclipse中,用java动态生成html文件. //用于存储html字符串 StringBuilder stringHtml = new StringBuilder(); try{ //打开文件 ...
 - 8.1 HTML基础知识点
			
8.1 HTML基础知识点 一.HTML是什么? Hyper Text Markup Language 超文本标记语言 的缩写 开发一个html文件,可以有很多方式 :比如Dreamweaver,HB ...