服务引用RestTemplate

举报
Nick Qiu 发表于 2020/10/23 12:45:34 2020/10/23
【摘要】 前言本文介绍如何调用服务,调用服务有如下方法:RestTemplate,直接使用RestTemplate,写死地址LoadBalancerClient,通过LoadBalancerClient获取地址和端口然后再用方式1处理@LoadBalanced,利用@LoadBalanced注解,可在restTemplate里使用应用名字RestTemplate //1.第一种方式,写死地址RestT...

前言

本文介绍如何调用服务,调用服务有如下方法:

  • RestTemplate,直接使用RestTemplate,写死地址

  • LoadBalancerClient,通过LoadBalancerClient获取地址和端口然后再用方式1处理

  • @LoadBalanced,利用@LoadBalanced注解,可在restTemplate里使用应用名字

RestTemplate

 //1.第一种方式,写死地址RestTemplate restTemplate = new RestTemplate();
String response =  restTemplate.getForObject("http://localhost:8080/msg",String.class);

LoadBalancerClient

@RestController@Slf4jpublic class ClientController {    @Autowired
    private LoadBalancerClient loadBalancerClient;    @GetMapping("/getProductMsg")    public String getProductMsg(){   
        //2.第二种,通过应用名获url,然后再使用第一种方式处理
        RestTemplate restTemplate = new RestTemplate();
        ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
        String url = String.format("http://%s:%d/msg",serviceInstance.getHost(),serviceInstance.getPort());
        String response =  restTemplate.getForObject(url,String.class);
        log.info("resoponse={}",response);        return  response;
    }
}

使用LoadBalanced注解

  • 新建一个带LoadBalanced注解的类

package com.nick.order.config;@Componentpublic class RestTemplateConfig {    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){        return new RestTemplate();
    }
}
  • 引用

package com.nick.order.controller;@RestController@Slf4jpublic class ClientController {    @Autowired
    private RestTemplate restTemplate;    @GetMapping("/getProductMsg")    public String getProductMsg() {
        String response =  restTemplate.getForObject("http://PRODUCT/msg",String.class);
        log.info("resoponse={}", response);        return response;
    }
}


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。