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

【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 {@Beanpublic 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 {@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: "*"

目录结构如下
在这里插入图片描述

启动项目测试

在这里插入图片描述
服务提供者也要启动,否则将访问不到超时!

访问Nacos

启动完成后,浏览器访问地址http://localhost:8848/nacos,我们会看到两个服务都被注册到Nacos
在这里插入图片描述

访问接口

访问地址 http://localhost:9091/test/app/name ,你会在浏览器上看到如下内容,服务消费者成功访问服务提供者。
在这里插入图片描述

查看端点检查

访问地址http://localhost:9091/actuator/nacos-discovery
在这里插入图片描述

http://www.lryc.cn/news/42476.html

相关文章:

  • C语言——动态内存管理 malloc、calloc、realloc、free的使用
  • 技术分享——Java8新特性
  • vue基础知识大全
  • 第2篇|文献研读|nature climate change|减缓气候变化和促进热带生物多样性的碳储量走廊
  • 从暴力递归到动态规划(2)小乖,你也在为转移方程而烦恼吗?
  • Leetcode.1638 统计只差一个字符的子串数目
  • KoTime:v2.3.9新增线程管理(线程统计、状态查询等)
  • 直面风口,未来不仅是中文版ChatGPT,还有AGI大时代在等着我们
  • 若依微服务(ruoyi-cloud)保姆版容器编排运行
  • vue2图片预览插件
  • 手写Promise源码的实现思路
  • 【数据结构】-关于树的概念和性质你了解多少??
  • 【前端之旅】NPM必知必会
  • Android SQLite使用事务来确保所有语句都以原子方式执行及保证数据完整性一次执行多条语句示例
  • nodejs+vue校园超市小卖部零食在线购物商城系统
  • Karl Guttag:论相机对焦技术在AR/VR中的沿用
  • ECL@SS学习笔记(3)-概念数据模型
  • 206. 反转链表
  • 文心一言 vs GPT-4 —— 全面横向比较
  • rancher2.6进阶之kubectl安装
  • 图像基本变换
  • 基于文心一言的底层视觉理解,百度网盘把「猫」换成了「黄色的猫」
  • 安卓开发的环境配置教程
  • 【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程
  • 关于自动机器学习flaml训练时的一些报错
  • 【计算机视觉】消融实验(Ablation Study)是什么?
  • Java毕业论文参考文献参考例子整理
  • C++ Primer第五版_第六章习题答案(21~30)
  • SLAM算法之HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM
  • phpstorm断点调试