当前位置: 首页 > article >正文

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

文章目录

  • 简介
  • 开始搭建
    • 创建项目
    • 修改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.controllerConsumerController.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
在这里插入图片描述


http://www.kler.cn/a/3014.html

相关文章:

  • 堆叠注入--攻防世界CTF赛题学习
  • vue使用keep-alive后从部分页面进入不缓存
  • Linux命令scp用法
  • JVM笔记(九)选择合适的垃圾收集器
  • leetcode 删除有序数组中的重复项
  • 二分查找——我欲修仙(功法篇)
  • 网络安全法
  • Dijkstra 算法
  • 新版logcat最全使用指南
  • C语言--动态内存管理1
  • 【栈和队列OJ题】有效的括号用队列实现栈用栈实现队列设计循环队列
  • 若依微服务(ruoyi-cloud)保姆版容器编排运行
  • 静态版通讯录——“C”
  • JAVA框架知识整理
  • 并发编程(六)—AbstractExecutorService源码分析
  • Karl Guttag:论相机对焦技术在AR/VR中的沿用
  • 电商(二)网关微服务搭建
  • PyTorch 之 基于经典网络架构训练图像分类模型
  • 【Python练习】序列结构
  • 当下的网络安全行业前景到底怎么样?还能否入行?