我有spring app的application.properties文件,其中包含一些简单的属性:
queue=my.test.q
在java代码中我需要指定队列到@RabbitListener:
@Component
public class Handler {
@RabbitListener(queues = "my.test.q")
public void handleMessage(Message message) {
...
}
可行,但我想将参数传递给注释,我尝试了以下但没有一个工作。
@Component
public class Handler {
@Value("${queue}")
private String queueName;
@RabbitListener(queues = @Value("${queue}") <-- not working
@RabbitListener(queues = queueName)) <--- not working
public void handleMessage(Message message) {
...
}
有可能吗?
答案 0 :(得分:9)
正如您在javadoc for the @RabbitListener annotation中看到的,队列属性是一个字符串表,因此您无法为其指定注释。您也无法在Java中为注释属性分配变量,因为它们必须是compile constants。
我现在无法测试它,但javadoc似乎暗示这应该有用(注意,它说它可能会返回SpEL表达式):
@RabbitListener(queues = "${queue}")
public void handleMessage(Message message) {
...
}