Eureka注册中心(二)


title: SpringCloud学习总结二
date: 2020-06-10
categories:

  • Eureka注册中心
    tags:
  • SpringCloud
  • Eureka注册中心
  • RestTemplate

Eureka注册中心(二)

1.编写服务消费者

1.1 直接调用接口

创建一个maven项目service-consumer,然后添加依赖,依赖和服务提供者的一样。启动类也一样。

唯一不一样的是配置信息:

spring.application.name=service-consumer
server.port=8082

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程HTTP服务的方法,能够大大提高客户端的编写效率。我们通过配置RestTemplate来调用接口,代码如下:

@Configuration
public class BeanConfiguration {

    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

创建接口,在接口中调用house/hello接口,代码如下:

@RestController
@RequestMapping("/consumer")
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/callHello")
    public String callHello() {
        return restTemplate.getForObject("http://localhost:8081/house/hello", String.class);
    }
}

启动启动类启动消费者服务,访问localhost:8082/consumer/callHello看看有没有返回hello字符串,返回了就证明调用成功。

4.2 通过Eureka来消费接口

上面是直接通过服务接口的地址来调用的,完全没有用到Eureka带给我们的便利。既然用了注册中心,那么客户端调用的时候肯定是不需要关心有多少个服务提供接口,下面我们来改造之前的调用代码。

首先改造RestTemplate的配置,添加一个@LoadBalanced注解,这个注解会自动构造LoadBalancerClient接口的实现类并注册到Spring容器中,代码如下:

@Configuration
public class BeanConfiguration {

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

接下来就是改造调用代码,我们不再直接写固定地址,而是写成服务的名称,这个名称就是我们注册到Eureka中的明称,是属性文件中的spring.application.name,代码如下:

@RestController
@RequestMapping("/consumer")
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/callHello")
    public String callHello() {
        return restTemplate.getForObject("http://provider/privoder/hello", String.class);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值