【发布时间】:2018-02-17 22:09:10
【问题描述】:
我目前将我的兔子监听器注释设置为:
@RabbitListener(queues = "my-queue")
是否无法从我的 yaml 文件中提取队列名称。我想这样做的原因是,我可以将队列更改为集成测试的测试队列,只需更改 yaml 文件中的队列名称即可。看来注释必须接受一个常量字符串,有没有办法解决这个问题?谢谢,
【问题讨论】:
标签: spring-boot rabbitmq spring-rabbit
我目前将我的兔子监听器注释设置为:
@RabbitListener(queues = "my-queue")
是否无法从我的 yaml 文件中提取队列名称。我想这样做的原因是,我可以将队列更改为集成测试的测试队列,只需更改 yaml 文件中的队列名称即可。看来注释必须接受一个常量字符串,有没有办法解决这个问题?谢谢,
【问题讨论】:
标签: spring-boot rabbitmq spring-rabbit
是的,它被称为properties place holder,可以这样完成:
@RabbitListener(queues = "${myQueue.property}")
myQueue.property 在您的 yaml 中准确声明的位置。
参数名称、值和类型可以是属性占位符 (${...}) 或 SpEL 表达式 (#{...})。名称必须解析为字符串; type 的表达式必须解析为 Class 或类的完全限定名称。该值必须解析为可由 DefaultConversionService 转换为类型的内容(如上例中的 x-message-ttl)。
【讨论】:
queues 是多值选项,所以你可以这样做queues = {"queue1", "queue2"}
"#{'${myQueue.property}'.split(',')}