记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程

场景描述:

         1.项目启动,通过注解获取配置文件中需要监听的队列信息

          2.需要重新启动后才会生效,因为是在配置文件中

          3.或许可以调整从数据库中读取或者nacos动态配置试着是不是可以不用重启,没有亲自测试,只是觉得应该也是可以

 

话不多说,先在配置文件中写上你想监听的queue,我们先弄个简单的单个队列示例

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第1张图片

 记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第2张图片

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第3张图片 单个,在配置文件里面是可以正常的。那么,如果想配置多个呢。 还可以这么玩吗???哈哈哈,显然是不行的。下面来看看多个的是个什么情况吧。

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第4张图片

纳尼。。。启动就报错了,哈哈咋一看想解析出来接收的对象不是数组呢,那我们先不读取配置,直接配上去看下什么情况呗。

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第5张图片

嗯?这么配置肯定是没问题的,那么问题就来了 怎么解析成数组呢。。加个大括号试试。。

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第6张图片

还是报错,google了下${}表达式解析数组,各种看了云里雾里。貌似有一篇文章,我看了,好像有点灵感就尝试了下。竟然可以了,我也不知道为什么可以,反正它就是可以了。由于网上没找到比较好的内容,所以我就在这里mark一下了

以下是最后处理的代码截图

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第7张图片

启动成功了呢,那就尝试下是不是可以监听多个了

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第8张图片

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第9张图片

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第10张图片

记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程_第11张图片

1.通过@Value从配置文件中将监听队列加载到数组属性中

2.通过@Bean 将属性对象注入到容器当中去

3.通过SPEL表达式从上下稳重获取到对应的属性数组

4.添加到监听器属性中

ok,搞定。Mark 2020-06-18

 

你可能感兴趣的:(记录一下关于RabbitMQ消费端@RabbitListener动态配置监听队列Queue的处理过程)