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

news2024/11/20 9:28:30

文章目录

  • 简介
  • 开始搭建
    • 创建项目
    • 修改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.coloradmin.cn/o/418724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习代码,对coco数据集evaluate时,spice评估总是报错,解决如下:

在跑evaluate.py时&#xff0c;发现bleu&#xff0c;METEOR&#xff0c;ROUGE_L都能成功&#xff0c;就是spice评估总是报错&#xff0c;我的报错内容如下&#xff1a; 就找了好久&#xff0c;也问了chatgpt啥的&#xff0c;尝试很很多&#xff0c;最终发现是java版本太高了&am…

数字化转型导师坚鹏:金融机构数据治理政策解读及问题解决之道

金融机构数据治理政策解读及问题解决之道课程背景&#xff1a; 很多金融机构存在以下问题&#xff1a; 不知道如何准确理解银保监会数据治理相关政策及要求&#xff1f; 不清楚如何有效解决监管数据治理常见问题及提升之道&#xff1f; 不清楚如何有效落实银保监会数据治理相…

算法模板(2):数据结构(3) 复杂数据结构1

复杂数据结构&#xff08;1&#xff09; 1. Splay 基本概念 什么是 Splay Splay 是一种二叉查找树&#xff0c;它通过不断将某个节点旋转到根节点&#xff0c;使得整棵树仍然满足二叉查找树的性质&#xff0c;并且保持平衡而不至于退化为链. 旋转操作 为了使 Splay 保持平…

虚拟主持人是什么?有哪些应用场景?

虚拟主持人是一种通动作捕捉技术或人工智能等技术&#xff0c;来驱动虚拟形象模拟真实主持人的动作、声音和表情&#xff0c;为各种场合提供主持服务的数字化角色。虚拟主持人的外貌、服装、发型、口音等都可以根据客户的需求和喜好进行定制&#xff0c;甚至可以创建出具有明星…

冶炼金属(十四届蓝桥杯B组)(超级详细)

目录 1、冶炼金属 解法一&#xff1a;(二分算法) 解法二&#xff1a;&#xff08;数学公式推导&#xff09; 2、永远不要试图用拖延来期待事情发生改变&#xff01;&#xff01;&#xff01; 1、冶炼金属 小蓝有一个神奇的炉子用于将普通金属 O冶炼成为一种特殊金属 X。 这…

OceanBase 4.1 发版 | 一个面向开发者的里程碑版本

欢迎访问 OceanBase 官网获取更多信息&#xff1a;https://www.oceanbase.com/ 2022 年 8 月&#xff0c;OceanBase发布了 4.0 版本&#xff08;小鱼&#xff09;&#xff0c;作为业内首个单机分布式一体化架构&#xff0c;兼顾了分布式架构的扩展性和集中式架构的性能优势&…

Iptables安全防火墙企业实战

1. IPtables入门简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具&#xff0c;它的功能十分强大&#xff0c;使用非常灵活&#xff0c;可以对流入和流出服务器的数据包进行很精细的控制。Iptables主要工作…

用通俗易懂的话来解释什么是Socket

前言 我在去年就学习过Java中Socket的使用&#xff0c;但对于Socket的理解一直都是迷迷糊糊的。看了网上很多关于Socket的介绍&#xff0c;看完还是不太理解到底什么是Socket&#xff0c;还是很迷。直到最近在学习计算机网络&#xff0c;我才对Socket有了一个更深地理解。之前…

sqoop数据导出、脚本使用

目录 准备表与数据 数据导出 脚本调用 准备表与数据 mysql表 CREATE TABLE user (id int(20),name varchar(20) )ENGINEINNODB DEFAULT CHARSETutf8; hive表 create table users( id bigint, name string ) row format delimited fields terminated by "\t";…

消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】

1、安装 1.1 拉取镜像 docker pull rabbitmq:management1.2 查看镜像 docker images1.3 创建容器 docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management1.4 浏览器访问 登录进去后的效…

【C++】16.红黑树

1.红黑树 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或B lack。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍&#xff0c;因而…

UNIAPP实战项目笔记60 前端使用token来验证是否已经登录

UNIAPP实战项目笔记60 前端使用token来验证是否已经登录 获取数据库中用户是否有token值,并存入 store.user.token中,有值代表已经登录 detail页面 通过验证token拦截未登录用户bin跳转到登录页面 实际案例图片 后端接口文件 index.js var express require(express); var rou…

Python-入门基础篇(1)

这里使用的编译器是pycharm 打开pycharm 新建项目 选择一个文件路径&#xff08;文件名字不要带中文&#xff09; 新建一个.py 文件 这里就要编写代码啦 Python入门最基础的一些函数 print() 该函数可以输出内容到控制台。在括号中输入要输出的内容&#xff0c;用逗号隔开…

RocketMQ延迟消息源码分析

写作目的 第一个原因&#xff1a;最近玩哔哩哔哩遇到一个RocketMQ的Contributor&#xff0c;一开始不知道他是Contributor&#xff0c;后来问到延迟消息的时候这块还不是很了解&#xff0c;他告诉我学习要系统&#xff0c;你既然了解事务消息那我理解应该也了解延迟消息&#…

BGP路由实验

要求1 使用 Preval 策略 [r4]ip ip-prefix PV permit 192.168.10.0 24 [r4]route-policy PV permit node 10 [r4-route-policy]if-match ip-prefix PV [r4-route-policy]apply preferred-value 100 [r4]route-policy PV permit node 20 [r4-bgp]peer 24.0.0.2 route-policy…

redis网络模型

用户空间和内核空间IO五种IO模型阻塞IO非阻塞IOIO多路复用selectpollepollweb服务流程信号驱动IO异步IOIO模型比较redis网络模型redis为什么是单线程redis单线程网络模型流程用户空间和内核空间 为安全&#xff0c;将用户应用和系统应用分隔开&#xff0c;产生用户空间和内核空…

thanos prometheus 的高可用、长期存储二进制部署

1.简介 http://thanos.io/ thanos 是具有长期存储功能的开源、高可用性 Prometheus的集群组件。 全局查询视图 跨多个 Prometheus 服务器和集群查询指标 无限保留 使用对象存储扩展系统&#xff0c;不限时间保留指标。 Prometheus兼容 兼容 Prometheus api&#xff0c;用于…

我在windows10下,使用msys64 mingw64终端

系列文章目录 文章目录系列文章目录前言一、MSYS2是什么&#xff1f;前言 msys2官网 MSYS2 &#xff08;Minimal SYStem 2&#xff09; 是一个MSYS的独立改写版本&#xff0c;主要用于 shell 命令行开发环境。 同时它也是一个在Cygwin &#xff08;POSIX 兼容性层&#xff09…

软件测试简历如何编写?还在乱写?精细优化让自己脱颖而出......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 简历是我们向面试官…

教育大数据总体解决方案(6)

触控录播主机集成视频编码、实时导播、音频处理、图像跟踪、电子云台等功能&#xff0c;无需额外的辅助跟踪设备。支持5路视频信号的采集录制、画面自动跟踪及全自动/半自动导播切换&#xff0c;让教师免于分心调控&#xff0c;专注于课堂教学。 整机采取一体化设计及三合一按键…