资讯专栏INFORMATION COLUMN

RestTemplate的三种使用方式

wendux / 749人阅读

摘要:准备服务端我是用的是一个普通的第一种方式直接使用,写死第一种方式直接使用,写死第二种方式第二种方式利用通过应用名获取,然后再使用第二种方式利用通过应用名获取,然后再使用第三种方式第三种方式利用,可再里使用应用名字第三种方式利用,可再里使用应

准备

服务端我是用的是一个普通的API

@RestController
public class ServerController {

    @GetMapping("/msg")
    public String msg(){
        return "this is product" msg";
    }

}
第一种方式
直接使用restTemplate,url写死
@Slf4j
@RestController
public class ClientController {

    @GetMapping("/getProductMsg")
    public String getProductMsg(){
        // 1、第一种方式(直接使用restTemplate,url写死)
        RestTemplate restTemplate = new RestTemplate();
        String response = restTemplate.getForObject("http://localhost:9082/msg",String.class);
        log.info("response={}",response);
        return response;
    }

}
第二种方式
第二种方式(利用loadBalancerClient通过应用名获取url,然后再使用restTemplate)
@Slf4j
@RestController
public class ClientController {

    @Autowired
    private LoadBalancerClient loadBalancerClient;

    @GetMapping("/getProductMsg")
    public String getProductMsg(){

        //2、第二种方式(利用loadBalancerClient通过应用名获取url,然后再使用restTemplate)
        ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
        String url = String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort()) + "/msg";
        RestTemplate restTemplate = new RestTemplate();
        String response = restTemplate.getForObject(url,String.class);

        log.info("response={}",response);
        return response;
    }

}
第三种方式
第三种方式(利用@LoadBalanced,可再restTemplate里使用应用名字)
@Component
public class RestTemplateConfig {

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

}
@Slf4j
@RestController
public class ClientController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/getProductMsg")
    public String getProductMsg(){

        //3、第三种方式(利用@LoadBalanced,可再restTemplate里使用应用名字)
        String response = restTemplate.getForObject("http://PRODUCT/msg",String.class);

        log.info("response={}",response);
        return response;
    }

}
github项目

Cloud2Sell

基于SpringCloud微服务演化的点餐Demo系统

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71867.html

相关文章

  • Spring Boot 参考指南(使用RestTemplate调用REST服务)

    摘要:使用调用服务如果需要从应用程序调用远程服务,你可以使用框架的类,由于实例通常需要在使用之前进行定制,因此不提供任何自动配置的。自动配置的确保将合理的应用于实例。上一篇消息传递下一篇使用调用服务 33. 使用RestTemplate调用REST服务 如果需要从应用程序调用远程REST服务,你可以使用Spring框架的RestTemplate类,由于RestTemplate实例通常需要在使...

    CatalpaFlat 评论0 收藏0
  • 架构~微服务 - 收藏集 - 掘金

    摘要:它就是史上最简单的教程第三篇服务消费者后端掘金上一篇文章,讲述了通过去消费服务,这篇文章主要讲述通过去消费服务。概览和架构设计掘金技术征文后端掘金是基于的一整套实现微服务的框架。 Spring Boot 配置文件 – 在坑中实践 - 后端 - 掘金作者:泥瓦匠链接:Spring Boot 配置文件 – 在坑中实践版权归作者所有,转载请注明出处本文提纲一、自动配置二、自定义属性三、ran...

    church 评论0 收藏0
  • SpringCloud(第 014 篇)电影 Ribbon 微服务集成 Hystrix 断路器实现失

    摘要:当服务宕机或者不可用时,即请求超时后会调用此方法。添加电影微服务启动类电影微服务集成断路器实现失败快速响应,达到熔断效果。 SpringCloud(第 014 篇)电影 Ribbon 微服务集成 Hystrix 断路器实现失败快速响应,达到熔断效果 - 一、大致介绍 1、Hystrix 断路器的原理很简单,如同电力过载保护器。它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,...

    StonePanda 评论0 收藏0
  • SpringCloud微服务实战笔记

    摘要:服务提供者的运行机制用了双层结构来维护注册的服务信息,第一层为服务的名称,第二层为服务的实例名称。服务注册中心的运行机制为了防止服务的异常下线,会周期性的清理列表中未续约的服务。负载均衡器的基本功能维护该服务下的所有节点列表。 Spring Boot Spring Boot有什么作用 Spring Boot通过自动化的配置简化Spring原有的样板化的配置。 Spring Boo...

    chunquedong 评论0 收藏0
  • SpringCloud(第 015 篇)电影Ribbon微服务集成Hystrix增加隔离策略控制指标

    摘要:传播安全上下文或使用,通过增加的属性,来增加相关的配置来达到执行隔离策略,控制线程数或者控制并发请求数来达到熔断降级的作用。 SpringCloud(第 015 篇)电影Ribbon微服务集成Hystrix增加隔离策略控制线程数或请求数来达到熔断降级的作用 - 一、大致介绍 1、本章节介绍关于Hystrix的2种隔离方式(Thread Pool 和 Semaphores); 2、Thr...

    RobinQu 评论0 收藏0

发表评论

0条评论

wendux

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<