文章目录
- 简介
- 开始搭建
- 创建项目
- 修改POM文件
- 添加启动类
- 添加配置项
- 添加Controller
- 添加配置文件
 
- 启动项目测试
- 访问Nacos
- 访问接口
- 查看端点检查
 
简介
接下来我们创建一个服务消费者,本操作先要完成之前的步骤,详情请参照【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程
开始搭建
我们首先启动之前安装好的nacos,安装参照2.服务注册与发现(Nacos安装),创建方法与3.创建服务提供者大同小异。
创建项目
在我们之前搭建好的父项目中右击新建->新模块
 
 为我们的子模块取名字、组ID和工件ID
 
 创建后目录结构如下
 
修改POM文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-cloud-alibaba</artifactId>
        <groupId>com.moonce</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>moonce-consumer</artifactId>
    <packaging>jar</packaging>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!-- Spring Boot Begin -->
        <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>
        <!-- Spring Boot End -->
        <!-- Spring Cloud Begin -->
        <!-- Nacos 注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- Nacos 分布式配置中心 -->
        <!--        <dependency>-->
        <!--            <groupId>com.alibaba.cloud</groupId>-->
        <!--            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
        <!--        </dependency>-->
        <!-- Spring Cloud End-->
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.moonce.consumer.ConsumerApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
添加启动类
创建com.moonce.consumer包和ConsumerApplication.java启动类
 
 ConsumerApplication.java
package com.moonce.consumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}
建第二个子模块idea会提示如下,选择使用,多个服务再一个窗口,没有提示的话可以参照这篇文章手动设置
效果如下
我们的多个服务的启动项都被放在一个窗体,非常的纳爱斯!!!
添加配置项
新建软件包com.moonce.consumer.config和配置类NacosConsumerConfiguration.java ,目录结构如下
 
在NacosConsumerConfiguration.java 填入如下内容,主要作用是为了注入RestTemplate。
package com.moonce.consumer.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class NacosConsumerConfiguration {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
添加Controller
新建软件包com.moonce.consumer.controller和ConsumerController.java类,目录结构如下
 
 在ConsumerController.java类填入以下内容
package com.moonce.consumer.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class ConsumerController {
    @Autowired
    private LoadBalancerClient loadBalancerClient;
    @Autowired
    private RestTemplate restTemplate;
    @Value("${spring.application.name}")
    private String appName;
    @GetMapping(value = "/test/app/name")
    public String test() {
        
        //使用 LoadBalanceClient 和 RestTemplate 结合的方式来访问
        ServiceInstance serviceInstance = loadBalancerClient.choose("moonce-provider");
        String url = String.format("http://%s:%s/test/%s", serviceInstance.getHost(), serviceInstance.getPort(), appName);
        return restTemplate.getForObject(url, String.class);
    }
}
添加配置文件
application.yml
spring:
  application:
    name: moonce-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
server:
  port: 9091
management:
  endpoints:
    web:
      exposure:
        include: "*"
目录结构如下
 
启动项目测试

 服务提供者也要启动,否则将访问不到超时!
访问Nacos
启动完成后,浏览器访问地址http://localhost:8848/nacos,我们会看到两个服务都被注册到Nacos中
 
访问接口
访问地址 http://localhost:9091/test/app/name ,你会在浏览器上看到如下内容,服务消费者成功访问服务提供者。
 
查看端点检查
访问地址http://localhost:9091/actuator/nacos-discovery
 





















