首先我们在名为MSG的服务中定义一个简单的方法

@RestController
public class ServerController { @GetMapping("/msg")
public String msg() {
return "this is a msg";
}
}

我们需要在另一个服务中调用这个服务的方法,除了使用httpclient之外,我们还能用RestTemplate(RestTemplate是Spring提供的用于访问Rest服务的客户端)

第一种方式,这种方式只要指定url和返回类型即可调用,但是url是写死的,非常不方便。

@GetMapping("/getMsg")
public String getMsg(){
RestTemplate restTemplate=new RestTemplate();
String response=restTemplate.getForObject("http://localhost:8080/msg",String.class);
return response;
}

当我们的服务有多个URL的时候,第一种方式肯定是不行的,所以第二种方式是使用Spring Cloud提供的LoadBalancerClient

@GetMapping("/getMsg")
public String getMsg(){
RestTemplate restTemplate=new RestTemplate();
ServiceInstance serviceInstance=loadBalancerClient.choose("MSG");
String url=String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort());
String response=restTemplate.getForObject(url,String.class);
return response;
}

第三种方法我们可以使用注解的方式,先把RestTemplate配置成bean,@LoadBalanced是开启负载均衡的注解

@Component
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}

然后把这个RestTemplate注入进来调用

@Autowired
private RestTemplate restTemplate; @GetMapping("/getMsg")
public String getMsg(){
String response=restTemplate.getForObject("http://MSG/msg",String.class);
return response;
}

最新文章

  1. C++ 控制台代码输出控制
  2. 优化MySQL数据库性能的八大方法
  3. mongodb 安装后 出现警告:** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
  4. arcgis地图操作的资料URL,以供以后查阅
  5. mysql手工注入
  6. Linux环境上,Oracle常用命令
  7. C陷阱与缺陷代码分析之第1章词法陷阱
  8. SElinux用户管理操作
  9. 完整教程--idea使用git进行项目管理
  10. Servlet--HttpSession接口,HttpSessionContext接口,Cookie类
  11. Bzoj3160:万径人踪灭
  12. MySQL 菜鸟入门“秘籍”
  13. 运输问题的+Leapms模型
  14. lower_bound( )和upper_bound( )的基本用法
  15. java中String的认识
  16. leetcode986
  17. 使用Tensorflow训练自己的数据
  18. angular-resource版本差异问题
  19. Eclipse解决运行、启动缓慢问题思路
  20. NLP十大里程碑

热门文章

  1. 为 Raft 引入 leader lease 机制解决集群脑裂时的 stale read 问题
  2. BurpSuite intuder里保存所有网页的特定内容:以bugku的cookies欺骗为例题
  3. Ubuntu+QEMU+Xv6环境搭建
  4. ubuntu之路——day2
  5. 在Eclipse IDE进行Struts开发时提示错误:java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher的解决办法
  6. iview3 版本 升级
  7. JVM 类加载器命名空间深度解析与实例分析
  8. deepin常用软件列表
  9. leetcode 293.Flip Game(lintcode 914) 、294.Flip Game II(lintcode 913)
  10. iOS 简单实用的一些宏定义