Apollo、RocketMQ加载顺序问题

 

 

在SpringCloudAlibaba框架中,因Nacos配置中心管理权限过于简单,决定用Apollo代替Nacos配置中心,但在启动时,Nacos、Redis等配置读取正常,RocketMQ由于启动过早,无法从Apollo读取自己的服务地址配置。

报错如下:

Error processing condition on RocketMQAutoConfiguration.

针对此问题,进行以下3个方向的尝试,最开始觉得如果其他组件能正常读取Apollo配置,那应该是RocketMQ的问题,想办法降低它的加载顺序。最终发现不太现实,在RocketMQ社区也未找到相关问题。

尝试1.让rocketmq-spring-boot中的RocketMQAutoConfiguration延迟加载-失败

最起码要晚于ApolloAutoConfiguration。

如下方案失败:

/**
 * 试图让RocketMQAutoConfiguration在ApolloAutoConfiguration之后加载
 */
@Configuration
@AutoConfigureBefore(RocketMQAutoConfiguration.class)
public class OrderConfiguration {
    @Bean
    @ConditionalOnMissingBean(ApolloAutoConfiguration.class)
    public ApolloAutoConfiguration apolloAutoConfiguration() {
        return new ApolloAutoConfiguration();
    }
}

尝试2:开启全局懒加载,并排除Apollo-失败

尝试3:修改EnableApolloConfig order属性-失败

在启动类修改EnableApolloConfig order属性,还是报同样的错误。

@EnableApolloConfig(order = Integer.MIN VALUE)

解决方案:设置apollo更早阶段注入

直到忙活几个小时后,发现Apollo官方已经提供了容Apollo更早注入的方法,解决方法:

@SpringBootApplication
// 允许使用Feign客户端发送请求
@EnableFeignClients
// 指定要扫描的Mapper类的包的路径
@MapperScan("com.**.dao")
@EnableRedis
@EnableApolloConfig
// 扫描加载Filter
@ServletComponentScan
public class Application {
    public static void main(String[] args) {
        // 启用apollo配置开关 在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息。
        System.setProperty("apollo.bootstrap.enabled","true");
        // 将Apollo配置加载提到初始化日志系统之前。
        System.setProperty("apollo.bootstrap.eagerLoad.enabled","true");

        SpringApplication.run(Application.class, args);
    }
}

还有另一种方式:

Apollo官方文档

Apollo

Spring Boot除了支持上述两种集成方式以外,还支持通过application.properties/bootstrap.properties来配置,该方式能使配置在更早的阶段注入,比如使用@ConditionalOnProperty的场景或者是有一些spring-boot-starter在启动阶段就需要读取配置做一些事情(如dubbo-spring-boot-project),所以对于Spring Boot环境建议通过以下方式来接入Apollo(需要0.10.0及以上版本)。
从1.2.0版本开始,如果希望把日志相关的配置(如logging.level.root=info或logback-spring.xml中的参数)也放在Apollo管理,那么可以额外配置apollo.bootstrap.eagerLoad.enabled=true来使Apollo的加载顺序放到日志系统加载之前,不过这会导致Apollo的启动过程无法通过日志的方式输出(因为执行Apollo加载的时候,日志系统压根没有准备好呢!所以在Apollo代码中使用Slf4j的日志输出便没有任何内容),更多信息可以参考PR 1614。参考配置示例如下:
# will inject 'application' namespace in bootstrap phase
apollo.bootstrap.enabled = true
# put apollo initialization before logging system initialization
apollo.bootstrap.eagerLoad.enabled=true

        因为搜索方向不对浪费了几个小时,一开始一直在搜索如何让RocketMQ加载晚于Apollo,重点在调整两者加载顺序上,后来又在研究RocketMQAutoConfiguration的加载原理,尝试各种方法让RMQ延迟加载,最后随便搜了一下Apollo加载顺序,答案其实很多,在解决问题时还是要多扩散一下思路。


 

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

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

相关文章

第41节:cesium 闪烁效果-熊出没(含源码+视频)

结果示例: 点的闪烁:1.逐渐放大后消失;2.点闪烁。 图的闪烁:熊出没,含自定义显示文字效果。 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false">

科技资讯|苹果Vision Pro手部追踪和手势相关新专利曝光

近日&#xff0c;美国专利商标局正式授予苹果一项与 Apple Vision Pro 主要功能相关的专利&#xff1a;手部追踪和手指手势。 苹果专利指出&#xff0c;沉浸感的质量取决于几个重要因素。例如&#xff0c;显示器的特性&#xff0c;如图像质量、帧率、像素分辨率、高动态范围 …

信号波形时序图常用工具推荐

Refer: 下载&#xff1a;画时序图的四大神器_可编程器件-面包板社区 (eet-china.com) 软件工程师&#xff0c;习惯使用StarUML画Timing Diagram, 硬件工程师建议使用一下软件。 1、AndyTiming 免费的&#xff0c;这个有一个知乎的博文可以参考 https://zhuanlan.zhihu.com/p…

如何成为微软MVP?

对一个普通的开发人员来说&#xff0c;最大的认可就是得到微软官方的MVP 认证了&#xff0c;是一份对技术人的荣誉证书。 微软的MVP是相对公平公正的&#xff0c;只要你热爱技术&#xff0c;热爱分享&#xff0c;在一定的领域里有足够的深度&#xff0c;就会得到微软官方的认证…

MURF2080CT-ASEMI快恢复二极管对管MURF2080CT

编辑&#xff1a;ll MURF2080CT-ASEMI快恢复二极管对管MURF2080CT 型号&#xff1a;MURF2080CT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 恢复时间&#xff1a;75ns 正向电流&#xff1a;20A 反向耐压&#xff1a;800V 芯片个数&#xff1a;2 引脚数量&#xf…

〖码银送书第三期〗《Python机器学习:基于PyTorch和Scikit-Learn》

前言 近年来&#xff0c;机器学习方法凭借其理解海量数据和自主决策的能力&#xff0c;已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从AlexNet模型在2012年ImageNet大赛被提出以来&#xff0c;机器学习和深度学习迅猛发展&#xf…

WebDAV之π-Disk派盘 + PDF Expert

PDF Expert 支持WebDAV方式连接π-Disk派盘。 PDF Expert是一款macOS上的办公软件,它具有专业的PDF编辑功能,可以快速从邮件、网页支持PDF打开,支持用户进行阅读、批注等功能,用户可以直接在PDF上进行编辑文字图片,表单文档、创建笔记、添加书单等自定义使用,大大提高工…

C国演义 [第五章]

第五章 子集题目理解步骤树形结构递归函数递归结束的条件单层逻辑 代码 子集II题目理解步骤树形结构递归函数递归结束的条件单层逻辑 代码 子集 力扣链接 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。…

HarmonyOS/OpenHarmony应用开发-程序包多HAP机制(上)

一、多HAP机制设计目标 方便开发者模块化的管理应用&#xff0c;好的应用一般都是模块化管理&#xff0c;模块之间属于松耦合关系。多HAP方便了开发者将业务划分成多个模块&#xff0c;每个模块放到独立的HAP中。例如支付类应用&#xff0c;有统一的主界面&#xff0c;主界面管…

Windows mingw64 最简易 安装配置

其实挺简单一件事 很多教程都搞复杂了 自己写一个 只需要两步 1. 下载压缩包并解压 2. 配置环境变量 (1). GitHub 下载地址 Releases niXman/mingw-builds-binaries GitHub 如果GitHub下载太慢可以来这里加速 或者用地址2 GitHub Proxy 代理加速 (ghproxy.com) (2). 下…

学无止境·MySQL⑥(数据库备份和还原)

数据库备份和还原 备份和还原练习1、创建库和表2、使用mysqldump命令备份数据库中的所有表3、备份booksDB数据库中的books表4、使用mysqldump备份booksDB和test数据库5、使用mysqldump备份服务器中的所有数据库6、使用mysql命令还原第二题导出的book表7、进入数据库使用source命…

Rainbond开源

Rainbond的 Gateway API 插件制作实践 Gateway API 作为新一代的流量管理标准&#xff0c;对原有 Ingress 的扩展不规范、移植性差等问题做出了改进。从兼容K8s生态和优化网关体验出发&#xff0c;Rainbond 支持以插件的形式扩展平台网关能力&#xff0c;目前已经有多家社区提供…

领域知识图谱的医生推荐系统:利用BERT+CRF+BiLSTM的医疗实体识别,建立医学知识图谱,建立知识问答系统

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

DevOps基础服务1——版本控制gitlab

文章目录 一、基本了解1.1 安装git客户端1.2 git命令1.2.1 本地仓库1.2.2 远程仓库 二、安装gitlab三、功能管理3.1 创建账号3.2 用户注册授权通知功能3.3 创建项目远程库3.4 ssh设置3.5 克隆远程库项目到本地3.6 上传本地项目代码到远程库3.7 授权用户查看项目权限 一、基本了…

electron+vue3全家桶+vite项目搭建【21】自定义无边框窗口拖拽移动

文章目录 引入实现思路实现步骤1.主进程监听窗口移动2.通信工具补充ipc调用3.渲染进程封装通用拖拽组件 测试 引入 如果你尝试过透明窗口&#xff0c;并控制透明部分事件击穿&#xff0c;就会发现使用 drag属性样式去控制窗口拖拽会导致点击事件失效&#xff0c;并且带drag属性…

陌陌聊天数据分析 (一)

陌陌聊天数据分析&#xff08;一&#xff09; 目标 基于Hadoop和Hive实现聊天数据统计分析&#xff0c;构建聊天数据分析报表 需求 统计今日总消息量统计今日每小时消息量&#xff0c;发送和接收用户数量统计今日各地区发送消息数据量统计今日发送消息和接收消息用户数统计…

机器学习 day25(softmax在神经网络模型上的应用,提高数据精度的方法)

输出层采用softmax 在识别手写数字的模型中&#xff0c;预测y只有两个结果&#xff0c;所以输出层采用sigmoid激活函数且只有一个神经元。若预测y有10个结果&#xff08;0-9&#xff09;&#xff0c;该模型的前向传播计算方式与识别数字的模型完全相同&#xff0c;即隐藏层的…

符号化的正确姿势

GUI方式 将 .ips crash report 文件拖放到 Xcode > Window > Devices and Simulators > View Device Logs中, 然后导出 .crash 符号化文件. 使用条件: crash report 对应的 Archive 包是在本机构建的 symbolicatecrash symbolicatecrash 是一个 exec (可执行文件), …

Stepper, Slider 的使用

1. Stepper 步进器的使用 1.1 实现 /// 步进器 /加减控件 struct StepperBootcamp: View {State var stepperValue: Int 10State var widthIncrement: CGFloat 0var body: some View {VStack {Stepper("Stepper: \(stepperValue)", value: $stepperValue).padding…

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型,含短期预测未来功能

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型&#xff0c;含短期预测未来功能 一、效果展示 二、数据设置 数据采用一列数据滑动窗口设置为5 &#xff0c;可自行设置70%训练30%测试预测未来值为10 &#xff0c;可自行设置&#xff0c;控制10以内 三、模型…
最新文章