Rabbit监听器注释从yaml获取队列名称

hel*_*766 3 rabbitmq spring-boot spring-rabbitmq

我目前将我的兔子监听器注释设置为:

@RabbitListener(queues ="my-queue")

是不是可以从我的yaml文件中提取队列名称.我想这样做的原因是,我可以通过更改yaml文件中的队列名称将队列更改为测试队列以进行集成测试.看来注释必须接受一个常量字符串,有没有办法围绕这个?谢谢,

Art*_*lan 9

是的,它被调用properties place holder,可以这样做:

@RabbitListener(queues = "${myQueue.property}")
Run Code Online (Sandbox Code Playgroud)

如果这一myQueue.property恰恰是在你的YAML声明.

https://docs.spring.io/spring-amqp/docs/1.7.3.RELEASE/reference/html/_reference.html#async-annotation-driven

参数名称,值和类型可以是属性占位符($ {...})或SpEL表达式(#{...}).名称必须解析为String; type的表达式必须解析为Class或类的完全限定名称.该值必须解析为可以由DefaultConversionService转换为类型的内容(例如上例中的x-message-ttl).