通信方式

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;

第三种方式更加的简单


当多台服务器启动的时候,可能会产生负载均衡的问题。


好的爱情是你通过一个人看到整个世界,坏的爱情是为了一个人而舍弃世界。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐