spring java 动态获取consul K/V

news2025/7/16 4:35:07

spring java 动态获取consul K/V

1.springConsul配置kv路径

spring:
    cloud:
	    consul:
	      enabled: ${CONSUL_ENABLED:true}
	      host: ${CONSUL_HOST:localhost}
	      port: ${CONSUL_PORT:8500}
	      config:
	        prefix: ${CONSUL_CONFIG_PREFIX:config} #consul kv前缀
	        fail-fast: ${CONFIG_FAIL_FAST:false} #两个fail-fast结合实现启动服务时当consul不存在时服务能正常启动
	        format: YAML    # 表示consul上面文件的格式 有四种 YAML PROPERTIES KEY-VALUE FILES
	        data-key: ${CONSUL_DATA_KEY:data}    #表示consul上面的KEY值(或者说文件的名字) 默认是data
	        # watch选项为配置监视功能,主要监视配置的改变
	        watch:
	          enabled: true
	          delay: ${WATCH_DELAY:${consul.watch.delay:2000}}
	          wait-time: ${WATCH_WAIT-TIME:20}
	        default-context: ${CONSUL_DEFAULT_CONTEXT:baseconfig}
	        prefixes:
	          - config
	      discovery:
	        fail-fast: ${DISCOVERY_FAIL_FAST:false}
	        catalogServicesWatchDelay: ${CONSUL_DISCOVERY_CATALOG_SERVICES_WAtCH_DELAY:2000} #目录监听延迟
	        heartbeat:
	          enabled: ${HEARTBEAT_ENABLE:true} #两个fail-fast结合实现启动服务时当consul不存在时服务能正常启动
	          reregister-service-on-failure: ${HEARTBEAT_REREGISTER:true} #当ttl重试时,若服务不存在是否重新注册服务
	          ttl: ${HEARTBEAT_TTL_VALUE:20}s
	        enabled: true # 启用服务发现
	        prefer-ip-address: true # 表示注册时使用IP而不是hostname
	        hostname: localhost
	        health-check-path: ${CONSUL_HEALTH_CHECK_PATH:${management.endpoints.web.base-path:/actuator}/health}  #consul默认健康检查地址,可以通过management进行修改
	        health-check-critical-timeout: ${HEALTH_CHECK_CRITICAL_TIMEOUT:60s}  # 健康检查失败多长时间后,取消注册
	        service-name: ${spring.application.name}
	        instance-id: ${spring.application.name}-${spring.cloud.client.ip-address}-${server.port}  # 服务id
	        tags:
	          - ${TAGNAME_GRAYSCALE:graycaletag}=${GRAYSCALE_TAG:${spring.application.name}-${SERVER_SEQUENCE:1}}
	          - ${TAGNAME_SERVICEEXT:serviceext}=${SERVICE_EXT:default}
	        query-passing: true #仅发现健康状态的服务

重点:
spring.cloud.consul.config.prefix consulKV前缀,低版本仅能设置一个
spring.cloud.consul.config.data-key consulKV 最后一级
spring.cloud.consul.config.default-context consulKV中间层级
通过该配置,服务会从consul的KV路径config/baseconfig/data 下的data信息

2.自动注入consulKV到服务中

consul KV 配置为
在这里插入图片描述

当服务启动时,服务会从consul的KV对应路径下获取配信息到服务中,再服务中通过注解ConfigurationProperties来获取

@Getter
@Setter
@Component
@ConfigurationProperties("myconsul.kv.test")
public class MyConsulKvTest {
	private String name;
	private String id;
}

当修改consulKV后服务中 MyConsulKvTest 这个bean也会自动更新

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

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

相关文章

优秀案例 | 以虚拟人IP“科普熊猫”,为2023成都市全国科普日注入新活力

成都科普IP | 全国首个科普数字虚拟形象大使 虚拟人IP“科普熊猫” 2023成都市全国科普日启动仪式上,成都市科学技术协会现场发布了成都市科普熊猫数字虚拟形象大使——虚拟人“科科”。在2023成都世界科幻大会即将召开之际,结合了3D动作捕捉技术以及AR技…

【Java 进阶篇】JavaScript DOM Element 对象详解

JavaScript是一门广泛用于网页开发的脚本语言,而DOM(文档对象模型)是JavaScript在网页中操作HTML和XML文档的核心。DOM以树状结构表示文档,允许开发者以编程方式访问、操作和修改文档的内容和结构。在DOM中,Element对象…

MySQL查询优化看一篇就够了

关联查询优化 数据准备 #分类 CREATE TABLE IF NOT EXISTS type( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED NOT NULL, PRIMARY KEY ( id ) );#图书 CREATE TABLE IF NOT EXISTS book(bookid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,cardINT(10…

从自动化到测开,测试人员逆袭之路从此起步

在当今竞争激烈的软件测试行业中,近期的招聘市场确实面临一些挑战。大量的求职者争相涌入岗位,许多热衷于功能测试的人士甚至难以找到理想的工作机会。更不幸的是,连自动化测试和性能测试这些专业领域也受到了测试开发人员的竞争压力。然而&a…

Springboot 启动报错@spring.active@解析错误

Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character that cannot start any token. (Do not use for indentation)in reader, line 10, column 13:active: spring.active^查看是否勾选

uni-app--》基于小程序开发的电商平台项目实战(六)

🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生 🛵个人主页:亦世凡华、 🛺系列专栏:uni-app 🚲座右铭:人生亦可燃烧,亦可腐败&#xf…

Tang Capital宣布收购纳斯达克上市公司Rain Oncology100%股权

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,纳斯达克上市公司Rain Oncology(Rain)宣布近期已收到Tang Capital Partners旗下的子公司Concentra Biosciences以每股1.25美元的现金收购要约。 这家临床阶段微型市值癌症治疗药物开发商的股价在消…

【打印机故障】打印时一直显示任务“排队中”无法打印或取消

解决办法 一、关闭打印服务 如果打印任务无法取消或者删除,可以先暂停打印机的“服务,关闭”后台处理程序。具体方法如下: 1.在开始菜单搜索框中输入 services.msc或者中文输入“服务”,然后按下 enter 键。 2.从服务列表中选择打…

【Qt控件之QDialogButtonBox】概述及使用

概述 QDialogButtonBox类是一个小部件,它以适合当前小部件样式的布局呈现按钮。 对话框和消息框通常以符合该台界面指南的布局呈现按钮。不同的平台会有不同的对话框布局。QDialogButtonBox允许发人员向其添加按钮,并将自使用用户的桌面环境所适合的布局…

发现了一个牛逼的网站 可以免费使用chatGPT(看到最后)

最近,打工人们集体陷入了一场焦虑。“一觉醒来,我感觉自己快要失业了……”“身为文字工作者,我该如何自保饭碗?”“人工智能到底会不会完全取代人类的工作?” ChatGPT最近都听说了吧?据说,改论文、敲代码、写文案……只有你想不到的,没有人家办不成的! 它是什么? …

一篇文章带你搞定所有二叉树题型的递归思维(思路超详细)

文章目录 🎀前言:🏅先在开头总结一下,二叉树解题的思维模式分两类:🎇先解释一下“前序位置”,“后序位置”的意思🏨举一个简单的例子: 🪀下面通过两道例题&am…

HTTP 协议的基本格式(部分)

要想了解HTTP,得先知道什么是HTTP,那么HTTP是什么呢?HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议。那什么是超文本呢?那就是除了文本,还有图片,声音,视频等。 …

Linux系统编程_进程:C程序空间分配、fork、wait、exec、system、popen

1. 进程相关概念(414.1) 问1. 什么是程序,什么是进程,有什么区别? 程序是静态的概念,gcc xxx.c –o pro,磁盘中生成pro文件,叫做程序进程是程序的一次运行活动,通俗点即…

LoongArch单机Ceph Bcache加速4K随机写性能测试

LoongArch单机Ceph Bcache加速4K随机写性能测试 两块HDD做OSD [rootceph01 ~]# fio -direct1 -iodepth128 -thread -rwrandwrite -ioenginelibaio -bs4k -size100G -numjobs1 -runtime600 -group_reporting -namemytest -filename/dev/rbd0 mytest: (g0): rwrandwrite, bs(R)…

System.exit()方法参数

说明文档:System (Java Platform SE 8 ) 终止当前正在运行的Java虚拟机。该参数用作状态代码;按照惯例,非零状态码表示异常终止。 此方法调用类Runtime中的exit方法。此方法从不正常返回。 调用System.exit(n)实际上等…

这应该是关于回归模型最全的总结了(附原理+代码)

本文将继续修炼回归模型算法,并总结了一些常用的除线性回归模型之外的模型,其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归、人工神经网络、随…

个人博客系统的总结

个人博客系统 1、项目背景: 个人博客系统的兴起和发展是与信息技术和互联网的迅猛发展密切相关的。随着互联网的普及和数字化时代的到来,越来越多的人开始使用互联网平台来表达自己的观点、分享知识和展示个人创作。个人博客系统作为一种在线的个人信息…

C# CodeFormer Inpainting 人脸填充

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace CodeFormer_D…

Qt系列-QSplitter使用笔记

Qt拆分窗口可以使用QSplitter,也可以使用比较容易使用布局控件来完成,如果有需要对界面进行切割,可以使用QSplitter进行简易的控件拼接。 注意:QSplitter 继承自QFrame,而QFrame又继承自QWidget,这点很重要…

数据结构----算法--五大基本算法

数据结构----算法–五大基本算法 一.贪心算法 1.什么是贪心算法 在有多个选择的时候不考虑长远的情况,只考虑眼前的这一步,在眼前这一步选择当前的最好的方案 二.分治法 1.分治的概念 分治法:分而治之 将一个问题拆解成若干个解决方式…