【SpringCloud】Consul-服务注册中心及配置中心快速入门

【SpringCloud】Consul-服务注册中心及配置中心快速入门

文章目录

  • 【SpringCloud】Consul-服务注册中心及配置中心快速入门
    • 1. 下载安装及启动
    • 2. 服务注册
      • 2.1 引入依赖
      • 2.2 yml配置
      • 2.3 启动类配置
      • 2.4 测试
    • 3. 服务配置
      • 3.1 引入依赖
      • 3.2 yml配置
      • 3.3 创建配置文件
      • 3.4 动态刷新配置
      • 3.5 测试

1. 下载安装及启动

Consul下载地址:下载地址

Spring Cloud Consul 文档地址:文档地址

下载完毕,以开发模式启动Consul:

consul agent -dev

启动成功,进入可视化界面:http://localhost:8500:

image-20240423203830876


2. 服务注册

2.1 引入依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

2.2 yml配置

spring:
  application:
    name: cloud-payment-service
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

2.3 启动类配置

在启动类上添加 @EnableDiscoveryClient 注解开启服务发现:

@SpringBootApplication
@EnableDiscoveryClient
public class Main8001 {
    public static void main(String[] args) {
        SpringApplication.run(Main8001.class, args);
    }
}

2.4 测试

启动SpringBoot服务,检查服务是否注册成功。

image-20240423204328423

修改接口,测试接口调用是否成功:

@RestController
public class OrderController {

    //public static final String PaymentSrv_URL = "http://localhost:8001";//先写死,硬编码
    public static final String PaymentSrv_URL = "http://cloud-payment-service";//改成服务名

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/consumer/pay/get/{id}")
    public ResultData getPayInfo(@PathVariable("id") Integer id) {
        return restTemplate.getForObject(PaymentSrv_URL + "/pay/get/" + id, ResultData.class);
    }
}

在测试之前,别忘了将 RestTemplate 添加一个 @LoadBalanced 负载均衡注解,因为该服务可能有多个,所以要使用负载均衡策略:

@Configuration
public class RestTemplateConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

测试该接口,发现测试成功:

image-20240423204928656


3. 服务配置

3.1 引入依赖

<!--SpringCloud consul config-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

3.2 yml配置

原配置文件 application.yml 的内容:

server:
  port: 8001

# ==========applicationName + druid-mysql8 driver===================
spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
    username: root
    password: 123456
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

# ========================mybatis===================
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.zhj.cloud.entities
  configuration:
    map-underscore-to-camel-case: true

改造后的配置文件分为两部分:

  1. application.yml:
  2. bootstrap.yml

application.yml:

server:
  port: 8001

# ==========applicationName + druid-mysql8 driver===================
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
    username: root
    password: 123456
  profiles:
    active: dev # 多环境配置加载内容dev/prod,不写就是默认default配置

# ========================mybatis===================
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.zhj.cloud.entities
  configuration:
    map-underscore-to-camel-case: true

bootstrap.yml

spring:
  application:
    name: cloud-payment-service
    ####Spring Cloud Consul for Service Discovery
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
      config:
        profile-separator: '-' # default value is ",",we update '-';比如默认是cloud,payment,ervice 修改后为cloud-payment-service
        format: YAML

# config/cloud-payment-service/data
#       /cloud-payment-service-dev/data
#       /cloud-payment-service-prod/data

3.3 创建配置文件

打开 Consul 可视化界面,点击 Create:

image-20240423212700109

以官网配置为例:

image-20240423212819991

首先要创建一个 Config 文件夹,然后创建各个子文件夹,最后的data文件就是配置文件。

我们创建这三个配置文件:

  • config/cloud-payment-service/data:默认环境,default
  • config/cloud-payment-service-dev/data:开发环境,dev
  • config/cloud-payment-service-prod/data:生产环境,prod

注意:如果输入结尾是’/',则当前为文件夹,下方的文本框会消失。

image-20240423213239432

config/cloud-payment-service/data 为例,默认环境的配置如下,其他几个环境操作都相同。

image-20240423213738757


3.4 动态刷新配置

在启动类上添加 @RefreshScope 注解即可开启动态刷新配置的功能,默认每隔55s刷新一次配置。


3.5 测试

在控制器中添加如下代码:

@Value("${server.port}")
private String port;

@GetMapping(value = "/pay/get/info")
private String getInfoByConsul(@Value("${com.zhj}") String str) {
    return "com.zhj: " + str + "\t" + "port: " + port;
}

调用该接口:

image-20240423215022888

修改配置文件的 spring.profiles.active 的值为 prod ,再次测试:

image-20240423215215072


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/568288.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(超级详细)JAVA之Stream流分析-------持续更新喔!!!

学习目标&#xff1a; 掌握 Java Stream流的相关api 掌握 Java Stream流的基本实现 掌握 java Stream流的使用场景 代码已经整理上传到了gitee中&#xff0c;有需要的小伙伴可以取查看一下源码点个小心心喔 大家也可以帮我提交一点案例喔&#xff01;&#xff01;&#xff01;&…

水平越权,垂直越权

水平越权和垂直越权 水平越权 首先自己创建一个账号 然后在自己的修改密码&#xff0c;抓包&#xff0c;修改用户名等 但一般都会固定&#xff0c;它会固定当前用户名 垂直越权 不用登录就可以删除 当我们复制管理员的删除地址&#xff0c;然后访问它 它会跳出登录地址&#…

美国签证证件照规格要求(51mm*51mm)

美国签证证件照规格要求&#xff08;51mm*51mm&#xff09;

解码数据世界:统计学入门与应用指南

引言 统计学可以被定义为研究数据的科学&#xff0c;它涉及到数据的收集、分析、解释和呈现。其目标是从数据中提取有意义的信息&#xff0c;并使用这些信息来做出推断与决策。 统计学主要分别以下几个主要领域&#xff1a; 描述性统计&#xff1a;使用图表、图形和其他工具…

计算二维主应力的前端界面

<!DOCTYPE html> <html> <head> <title>二维主应力</title> </head> <body> <h2>计算二维主应力</h2> <form> <label for"input1">σ_1(Mpa):</label> <input type"t…

【数据结构】stack queue —— 栈和队列

前言 这阵子一直在学数据结构&#xff0c;知识点消化地有点慢导致博客一直没写&#xff0c;现在总算是有时间歇下来补补前面落下的博客了。从现在起恢复周更&#xff0c;努努力一周两篇也不是梦……闲话少说&#xff0c;今天就让我们一起来认识栈和队列 1. 栈的介绍和使用 栈…

《HCIP-openEuler实验指导手册》1.4 Apache MPM工作模式调整

MPM介绍 二、配置步骤 查看MPM当前工作模式 方法一&#xff1a; httpd -M | grep mpm方法二&#xff1a; 浏览器访问&#xff1a;http://IP:端口/server-status 方法三&#xff1a; cat /etc/httpd/conf.modules.d/00-mpm.conf查看 LoadModule mpm_event_module modules/mo…

C语言 字符类型

下面 我们来说字符类型 我们来看这个 保险单 金额 和 总额 都可以用数字类型 而性别则需要字符型 字符数据的存储 – ASCI码 字符类型 char 就是专为存储字符(如字母&#xff0c;标点和数字)而设计的类型。 使用单引号包含单个字符或转义字符去表示一个 char 类型的常量。 …

371D - Vessels

思路&#xff1a;用并查集维护&#xff0c;如果当前容器没有满&#xff0c;就指向自己&#xff0c;否则指向下一个容器。 这样就可以快速 find 到下一个没有满的容器&#xff0c;从而模拟询问 1。 代码&#xff1a; void solve(){int n;cin >> n;vector<int>p(n …

JRT1.5发布演示

JRT1.5演示视频 这是一次思想的解放&#xff0c;这是一次自我的挑战&#xff0c;这是一次涅槃重生。信创、安可、Linux、麒麟、UOS、King、PGSQL、ARM、Java围绕在我周围。JRT在DotNetCore的基础上完成了重生。对我而言&#xff0c;它不仅仅是一套框架那么简单&#xff1b;它更…

探索嵌入式系统:快速入门指南概览

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【数据结构(邓俊辉)学习笔记】向量03——常规向量

文章目录 0.概述1.元素访问2.置乱器3.判等器与比较器4.无序查找4.1 判等器4.2 顺序查找4.3 实现4.4 复杂度 5. 插入5.1 算法实现5.2 复杂度分析 6. 删除6.1 区间删除6.2 单元删除6.3 复杂度 7. 唯一化7.1 实现7.2 正确性7.3 复杂度 8. 遍历8.1 实现8.2 复杂度 9. 总结 0.概述 …

CUDA线程管理

核函数在主机端启动时&#xff0c;执行会转移到设备上&#xff0c;并且将控制权转移回主机。当核函数在GPU上运行时&#xff0c;主机可以运行其他函数。因此&#xff0c;主机与核函数是异步的。 此时&#xff0c;设备端也就是GPU上会产生大量的线程&#xff0c;并且每个线程都…

手势估计 | 使用TensorRT实现的实时手势估计+手势分类

项目应用场景 面向手势识别场景&#xff0c;项目具有实时手势识别 手势分类功能&#xff0c;采用 TensorRT 进行 GPU 加速推理&#xff0c;可通过手势识别进行远程控制。 项目效果 项目细节 > 具体参见项目 README.md (1) 安装依赖 git clone https://github.com/NVIDIA-…

初入单元测试

单元测试&#xff1a;针对最小的功能单元(方法)&#xff0c;编写测试代码对其进行正确性测试 Junit可以用来对方法进行测试&#xff0c;虽然是有第三方公司开发&#xff0c;但是很多开发工具已经集成了&#xff0c;如IDEA。 Junit 优点&#xff1a;可以灵活的编写测试代码&am…

2024年Java接单平台强力推荐!各个都知名!

Java这几年真卷飞了&#xff0c;一点都不夸张。因此&#xff0c;很多程序员朋友都已经试着转方向、换赛道了。试着接单、找私活就是一大途径。当然&#xff0c;特别是有技术、又有相对空闲时间的朋友&#xff0c;更值得一试。既是增加收入的捷径&#xff0c;又可以提升自我——…

SQL Server 中语句显示红色波浪线,提示对象/列名无效解决方法(无其他任何显式错误的情况)

拼写 名称等都没有出现任何错误时&#xff0c;依旧报错&#xff1a;对象/列名无效 解决步骤&#xff1a; 工具-选项-文本编辑器-Transact-SQL-IntelliSense重新勾选 启用 IntelliSense或者将 最大脚本大小改为 无限制 当然 工具卡了也可能会失效&#xff0c;进行 刷新 保存 或…

智慧安防视频监控EasyCVR视频汇聚平台无法自动播放视频的原因排查与解决

国标GB28181协议EasyCVR安防视频监控平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;平台支持7*24小时实时高清视频监控&#xff0c;能同时播放多路监控视频流…

开源大模型Llama3,堪比GPT-4。手把手本地安装,纯小白可操作,不需要编程经验,国内可下载,可视化使用。

最近最劲爆科技动态&#xff0c;Meta开源Llama3模型&#xff0c;最强开源模型。 Llama3发布后&#xff0c;扎克伯格亲自给媒体表示“要超越所有人&#xff0c;做最领先AI”。 吴恩达等一众大佬表示祝贺。 在线体验地址&#xff1a;https://www.meta.ai/ 不过国内在线体验基本…

【服务器部署篇】Linux下Ansible安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…