博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring cloud学习(二) 调用服务
阅读量:5875 次
发布时间:2019-06-19

本文共 3167 字,大约阅读时间需要 10 分钟。

spring-cloud调用服务有两种方式,一种是Ribbon+RestTemplate, 另外一种是Feign。

Ribbon是一个基于HTTP和TCP客户端的负载均衡器,其实feign也使用了ribbon, 只要使用@FeignClient时,ribbon就会自动使用。

一、Ribbon

1.1

新建模块client-a
pom文件

spring-cloud
com.feng
0.0.1
4.0.0
client-a
org.springframework.cloud
spring-cloud-starter-ribbon

新建bootstrap.yml

server:  port: 8910eureka:  client:    serviceUrl:          defaultZone: http://localhost:8010/eureka/spring:  application:      name: client-a

ClientApplication, 这里我们需要注册一个RestTemplate,并且使用@LoadBalanced开启负载功能

/** * @author fengzp * @date 17/5/9 * @email fengzp@gzyitop.com * @company 广州易站通计算机科技有限公司 */@SpringBootApplication@EnableDiscoveryClientpublic class ClientApplication {    public static void main(String[] args) {        SpringApplication.run(ClientApplication.class, args);    }    @Bean    @LoadBalanced    RestTemplate restTemplate(){        return new RestTemplate();    }}

测试用的controller

/** * @author fengzp * @date 17/5/9 * @email fengzp@gzyitop.com * @company 广州易站通计算机科技有限公司 */@RestControllerpublic class TestController {    @Autowired    RestTemplate restTemplate;    @RequestMapping("/hi")    public String hi(@RequestParam String id){        return restTemplate.getForObject("http://service-a/hi?id="+id, String.class);    }}

1.2

为了测试负载功能,这里要再新建一个模块service-b, 和上一篇的service-a的代码基本相同,只把端口修改了就可以。
把client-a和service-b都启动成功后,打开eureka中心应该看到:
954438-20170509155919051-1420067602.png

1.3

打开http://localhost:8910/hi?id=123
954438-20170509155510254-71990903.png
可以看到服务已经成功调用。

然后刷新页面

954438-20170509155539129-1194676025.png
看到端口已经改变,说明负载功能成功实现

二、feign

2.1

新建模块client-b
pom文件

spring-cloud
com.feng
0.0.1
4.0.0
client-b
org.springframework.cloud
spring-cloud-starter-feign

bootstrap.yml

server:  port: 8911eureka:  client:    serviceUrl:          defaultZone: http://localhost:8010/eureka/spring:  application:      name: client-b

ClientApplication, 使用@EnableFeignClients开启feiginClient功能

/** * @author fengzp * @date 17/5/9 * @email fengzp@gzyitop.com * @company 广州易站通计算机科技有限公司 */@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class ClientApplication {    public static void main(String[] args) {        SpringApplication.run(ClientApplication.class, args);    }}

这里新建一个ServiceAFeignClient来调用service-a服务

@Component@FeignClient(value = "service-a") //这里的name对应调用服务的spring.applicatoin.namepublic interface ServiceAFeignClient {    @RequestMapping(value = "/hi")    String hi(@RequestParam("id") String id);}

Controller

@RestControllerpublic class TestController {    @Autowired    ServiceAFeignClient serviceAFeignClient;    @RequestMapping("/hi")    public String hi(@RequestParam String id){        return serviceAFeignClient.hi(id);    }}

2.2

运行后的结果应该是和ribbon的相同。

个人感觉使用feign比较舒服,代码比较简洁。

转载于:https://www.cnblogs.com/andyfengzp/p/6830963.html

你可能感兴趣的文章
Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特
查看>>
关于跨DB增量(增、改)同步两张表的数据小技巧
查看>>
飞秋无法显示局域网好友
查看>>
学员会诊之03:你那惨不忍睹的三层架构
查看>>
vue-04-组件
查看>>
Golang协程与通道整理
查看>>
解决win7远程桌面连接时发生身份验证错误的方法
查看>>
C/C++ 多线程机制
查看>>
js - object.assign 以及浅、深拷贝
查看>>
python mysql Connect Pool mysql连接池 (201
查看>>
Boost在vs2010下的配置
查看>>
android camera(四):camera 驱动 GT2005
查看>>
一起谈.NET技术,ASP.NET伪静态的实现及伪静态的意义
查看>>
20款绝佳的HTML5应用程序示例
查看>>
string::c_str()、string::c_data()及string与char *的正确转换
查看>>
11G数据的hive初测试
查看>>
如何使用Core Text计算一段文本绘制在屏幕上之后的高度
查看>>
==和equals区别
查看>>
2010技术应用计划
查看>>
XML 节点类型
查看>>