spring cloud微服务(二)euraka服务消费者

spring cloud微服务(二)euraka服务消费者

【一】基于普通spring boot工程引入依赖

相对于eureka-client主要引入了spring-cloud-starter-netflix-eureka,以及spring-boot-starter-actuator,可以看到消费者本身也可以作为一个服务的提供者。

<properties>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

【二】注入restTemplate用于发起rest请求

我们同样需要在启动类上面加@EnableDiscoveryClient,此外,还需要注入RestTemplate 。

@EnableDiscoveryClient
@SpringBootApplication
public class EurekaConsumerApplication {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(EurekaConsumerApplication.class, args);
    }
}

【三】application.properties配置

此处与eureka-client 几乎一样,只需指定不同端口。

spring.application.name=eureka-consumer
server.port=2101
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

【四】测试接口,用于调用服务

/**
 * @author : Aslan
 * @version : v1.0
 * @time : 2018-07-30 14:39
 * @desc : 测试调用提供者提供的服务
 */
@RestController
public class TestController {

    @Autowired
    LoadBalancerClient loadBalancerClient;
    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/consumer")
    public String testConsumer() {
        //使用loadBalancerClient的choose方法负载均衡的选出一个eureka-client的服务实例
        ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");
        //此处拼接之前eureka-client里面的接口
        String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/clientTest";
        System.out.println(url);
        return restTemplate.getForObject(url, String.class);
    }
}

测试

下面是服务提供者【eureka-client】的测试接口代码:

这里写图片描述

我们启动依次启动eureka-server,eureka-client,eureka-cosumer,然后访问:http://localhost:2101/consumer,可以看到如下结果,成功调用了服务!
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_29534483/article/details/81285544