【SpringCloud】微服務間的通信(一)之RestRestTemplate

通信方式

SpringCloud微服務之間的通信有2種。

  • RestRestTemplate
  • Feign
RestRestTemplate

分爲3種:

第一種:直接方式

        //1.直接方式
        RestTemplate template = new RestTemplate();
        //第二個參數爲返回值
        String msg = template.getForObject("http://localhost:8080/msg", String.class);

缺點:需要手動寫ip地址和端口號


第二種:使用loadBalancerClient獲取端口號和ip

        @Autowired
        private LoadBalancerClient loadBalancerClient;
        RestTemplate template = new RestTemplate();
        ServiceInstance product = loadBalancerClient.choose("PRODUCT");
        String url = String.format("http://%s:%s/msg",product.getHost(),product.getPort());
        String msg = template.getForObject(url, String.class);

第三種:使用配置,以註解的方式進行服務間的調用

  • 配置文件
@Component
public class LoadConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
  • 注入:
    @Autowired
    private RestTemplate restTemplate;
//第三種方式,通過配置文件的方式
        String msg = restTemplate.getForObject("http://PRODUCT/msg", String.class);
        return msg;

第三種方式更加的簡單


當多臺服務器啓動的時候,可能會產生負載均衡的問題。


好的愛情是你通過一個人看到整個世界,壞的愛情是爲了一個人而捨棄世界。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章