因为用了好几套消息队列,我想在配置文件中配置如何开关切换消息队列。生产者还好,我只要决定读取配置文件决定用哪个生产者发送消息就行,但是rabbitmq的消费者是用注解启动的,所以这个时候就用到了@ConditionalOnExpression
#消费者总开关,0关1开
mq.cumsumer.enabled=1
#rocketmq消费者开关,true开启,false关闭
rocketmq.comsumer.enabled=false
#rabbitmq消费者开关,true开启,false关闭
rabbitmq.comsumer.enabled=true
@Component
@RabbitListener(queues = "monitorDataQueue")
@ConditionalOnExpression("${mq.cumsumer.enabled}==1&&${rabbitmq.comsumer.enabled:true}")
布尔值和数字都还好说,但是字符串相等我搞了半天都不行,最后终于找到了资料
https://www.e-learn.cn/content/wangluowenzhang/357851?q=content%2Fwangluowenzhang%2F357851
#选择消费者,rocketmq,rabbitmq
mq.comsumer=rabbitmq
@Component
@RabbitListener(queues = "monitorDataQueue")
@ConditionalOnExpression("'${mq.comsumer}'.equals('rabbitmq')")
本文介绍如何通过配置文件实现消息队列如RocketMQ和RabbitMQ的动态切换,重点讲解了使用Spring Boot的@ConditionalOnExpression注解来控制不同消息队列消费者的选择和启停。
4415

被折叠的 条评论
为什么被折叠?



