> 文章列表 > 【Spring Cloud Alibaba】4.创建服务消费者

【Spring Cloud Alibaba】4.创建服务消费者

【Spring Cloud Alibaba】4.创建服务消费者

文章目录

  • 简介
  • 开始搭建
    • 创建项目
    • 修改POM文件
    • 添加启动类
    • 添加配置项
    • 添加Controller
    • 添加配置文件
  • 启动项目测试
    • 访问Nacos
    • 访问接口
    • 查看端点检查

简介

接下来我们创建一个服务消费者,本操作先要完成之前的步骤,详情请参照【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程

开始搭建

我们首先启动之前安装好的nacos,安装参照2.服务注册与发现(Nacos安装),创建方法与3.创建服务提供者大同小异。

创建项目

在我们之前搭建好的父项目中右击新建->新模块
【Spring Cloud Alibaba】4.创建服务消费者
为我们的子模块取名字、组ID和工件ID
【Spring Cloud Alibaba】4.创建服务消费者
创建后目录结构如下
【Spring Cloud Alibaba】4.创建服务消费者

修改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启动类
【Spring Cloud Alibaba】4.创建服务消费者
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会提示如下,选择使用,多个服务再一个窗口,没有提示的话可以参照这篇文章手动设置
【Spring Cloud Alibaba】4.创建服务消费者
效果如下
【Spring Cloud Alibaba】4.创建服务消费者
我们的多个服务的启动项都被放在一个窗体,非常的纳爱斯!!!

添加配置项

新建软件包com.moonce.consumer.config和配置类NacosConsumerConfiguration.java ,目录结构如下
【Spring Cloud Alibaba】4.创建服务消费者

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 {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}

添加Controller

新建软件包com.moonce.consumer.controllerConsumerController.java类,目录结构如下
【Spring Cloud Alibaba】4.创建服务消费者
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 {@Autowiredprivate LoadBalancerClient loadBalancerClient;@Autowiredprivate 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-consumercloud:nacos:discovery:server-addr: 127.0.0.1:8848server:port: 9091management:endpoints:web:exposure:include: "*"

目录结构如下
【Spring Cloud Alibaba】4.创建服务消费者

启动项目测试

【Spring Cloud Alibaba】4.创建服务消费者
服务提供者也要启动,否则将访问不到超时!

访问Nacos

启动完成后,浏览器访问地址http://localhost:8848/nacos,我们会看到两个服务都被注册到Nacos
【Spring Cloud Alibaba】4.创建服务消费者

访问接口

访问地址 http://localhost:9091/test/app/name ,你会在浏览器上看到如下内容,服务消费者成功访问服务提供者。
【Spring Cloud Alibaba】4.创建服务消费者

查看端点检查

访问地址http://localhost:9091/actuator/nacos-discovery
【Spring Cloud Alibaba】4.创建服务消费者