天天看點

【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;
           

第三種方式更加的簡單

當多台伺服器啟動的時候,可能會産生

負載均衡

的問題。

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

繼續閱讀