2020-05-15 rocketmq-spring-starter结合disconf使用

摘要:
9876 Rocketmq。制作人group=测试组RocketMQTemplate的实际测试结果未能初始化。阅读Rocketmqspring-boot的源代码“producer.group”})这两个注释确定在初始化RocketMQTemplate和RocketMQAutoConfiguration之前,配置文件中是否有必要的配置项。

项目中要用到rocketmq,想要封装一个方便使用的client,网上搜索到官方的一个项目:

https://github.com/apache/rocketmq-spring

简单写了demo测试了下,感觉用起来接近rabbitmq,决定在实际项目里测试下。
disconf配置如下:

rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=test-group

实际测试结果RocketMQTemplate无法初始化,网上查了不少资料没有结果。

翻阅rocketmq-spring-boot的源码,RocketMQTemplate由
RocketMQAutoConfiguration内完成初始化,
观察到该类使用了以下注解:

@ConditionalOnProperty(prefix = "rocketmq", value = "name-server", matchIfMissing = true)
@ConditionalOnProperty(prefix = "rocketmq", value = {"name-server", "producer.group"})

两个注解在RocketMQTemplate、RocketMQAutoConfiguration初始化之前判断配置文件里是否有必须的配置项。

具体判断实现类:

@Order(-2147483608)
org.springframework.boot.autoconfigure.condition.OnPropertyCondition

debug分析,OnPropertyCondition初始化完成时没有读到disconf配置项,
猜测是@Order(-2147483608)导致的,考虑去掉ConditionalOnProperty的检查。
自行修改RocketMQAutoConfiguration,重新打包后,果然可以初始化了。

这样修改也带来了一些缺点,一些纯粹的Consumer应用内也初始化了RocketMQTemplate,而这是不必要的,后续可以再自行实现org.springframework.context.annotation.Condition优化下。

使用的版本:

rocketmq-client 4.5.2
rocketmq-spring-starter 2.0.5-SNAPSHOT

免责声明:文章转载自《2020-05-15 rocketmq-spring-starter结合disconf使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue之生命周期activated与created使用在pycharm中运行python程序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ArchLinux安装与配置小结

最近无意间发现一个基于ArchLinux的发行版——BlackArch,主题十分炫酷(中二)。当然渗透类的Linux 发行版已经有BackTrack和Kali了,不过都是源于Debian的,使用者众多,随波逐流无法突显我们的逼格, 要论小众,ArchLinux算是个中翘楚。呵呵开个玩笑,其实ArchLinux的亮点在于“小”,不同于其他发行版的“最小化安装...

Arch Linux 分区设定以及新增用户等命令

一.启动虚拟机  二.进入live(选择第一个) 进入root根目录 cd /  三.硬盘分区   Ⅰ.查看设备信息 fdisk -l 或者 lsblk    Ⅱ.分配空间 cfdisk /dev/sda          Ⅲ.格式化分区 mkfs.fat /dev/sda1 mkswap /dev/sda2 mkfs.ext4 /dev/...

Android : 修改内核源码 and 编译、打包成新的boot.img

一、Android内核源码的下载: 1.Google GIT地址: $ git clone https://android.googlesource.com/kernel/common.git   $ git clone https://android.googlesource.com/kernel/exynos.git   $ git clone htt...

springboot之配置文件

springboot在加载配置文件的时候是有先后顺序的,了解加载配置文件的先后顺序,可以减少编写程序出现错误 1 springboot加载配置文件的先后顺序如下: SpringApplication将从以下位置加载application.properties文件,并把它们添加到Spring Environment中: 当前目录下的/config子目录。...

windows和ubuntu 10.4双启动顺序

改动/boot/grub/grub.cfg文件 /boot/grub/grub.cfg文件,这与旧版本号不同(9.10之前版本号/boot/grub/menu.lst),并且为了安全起见,该文件默觉得“仅仅读”属性,因此在改动启动菜单之前你必须先将其文件属性改为“可读写”后方可改动文件内容。 sudo chmod 666 /boot/grub/gru...

ubuntu安装出现"删除initramfs-tools时出错",subprocess installed post-installation script returned error exit status 1

昨日准备重装ubuntu,增大了系统容量,因为前面用到boot分区不到100M,于是这里分区如下 /boot 100M / 30G /home 50G 然后安装快结束时就出现如下图问题 开始以为是镜像做的有问题,于是重新制作了镜像,安装了两次,failed 再在网上搜索,搜索subprocess installed .....找不到什么有...