文章目录
- 简介
- 开始搭建
- 创建项目
- 修改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