IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 注解上动态获取Nacos配置 -> 正文阅读

[Java知识库]注解上动态获取Nacos配置

注解上动态获取Nacos配置

统一Nacos配置

# RocketMQ配置  
rocketmqs:
  # 服务名/MQ网址
  nameServer: 127.0.0.1:9876
  # 主题
  topic: flight-xx-log
  # 消费组
  consumerGroup: flight-test
  # 账号
  accessKey: flightmq
  # 密码
  secretKey: 123456
  # true 表示开启 false 表示关闭
  enable: true 

在代码中获取 Nacos 上的配置

@RefreshScope
@Component
@Slf4j
public class RocketMQConsumer implements RocketMQListener<String> {
    
    @Value("${rocketmqs.appName}")
    private String appName;
    
    public RocketMQConsumer(TrcFlightChgInfoMqService flightChgInfoMqService) {
        log.info("888");
        this.flightChgInfoMqService = flightChgInfoMqService;
    }
}

注解上获取 Nacos 配置方法 有两种
这个需要看情况而定,这种不行就用另一种
方法1:
使用 “${}”,获取,RocketMQ/RabbitMQ 的注解中配置是可以的,例如下面代码

@Component
@Slf4j
@RocketMQMessageListener(topic = "${rocketmqs.topic}", consumerGroup = "${rocketmqs.consumerGroup}",
        accessKey = "${rocketmqs.accessKey}", secretKey = "${rocketmqs.secretKey}",
        nameServer = "${rocketmqs.nameServer}")
@ConditionalOnProperty(value = "rocketmqs.enable", matchIfMissing = false,havingValue = "true")
public class RocketMQConsumer implements RocketMQListener<String> {

    public RocketMQConsumer(TrcFlightChgInfoMqService flightChgInfoMqService) {
        log.info("888");
        this.flightChgInfoMqService = flightChgInfoMqService;
    }
}

方法2:
不用"${}",直接获取,RabbitMQ是可以使用的;@ConditionalOnProperty 注解 “rocketmqs.enable” 这样才是对的

在这里插入代码片
@Component
@Slf4j
@ConditionalOnProperty(value = "rocketmqs.enable", matchIfMissing = false,havingValue = "true")
public class RocketMQConsumer implements RocketMQListener<String> {

    public RocketMQConsumer(TrcFlightChgInfoMqService flightChgInfoMqService) {
        log.info("888");
        this.flightChgInfoMqService = flightChgInfoMqService;
    }
}

如何测试上图 @ConditionalOnProperty 的 value 属性是否成功读取到 Nacos 的配置:

  1. 创建一个构造函数,并且记录一个日志(随便记录);
    比如:
    public RocketMQConsumer(TrcFlightChgInfoMqService flightChgInfoMqService) {
        log.info("888");
        this.flightChgInfoMqService = flightChgInfoMqService;
    }

结果图:
在这里插入图片描述

  1. 启动项目,此时 rocketmqs.enable 的配置是 true,启动成功后在控制台搜索记录的日志,查看是否有打印在控制台, 有记录则表示成功;
  2. 修改 rocketmqs.enable 的配置为 false ,重下新启动项目,启动成功后查看控制台是否有日志记录,没有则表示已关闭该配置。
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:22:50  更:2022-03-22 20:24:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:05:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码