我有application.properties文件的Spring应用程序,其中包含一些简单的属性:
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) {
...
}
这可能吗?
1条答案
按热度按时间qco9c6ql1#
正如您在@RabbitListener注解的javadoc中所看到的,queues属性是一个String表,因此您无法为其分配注解,在Java中也根本无法为注解属性分配变量,因为它们必须是compile constants。
我现在无法测试它,但javadoc似乎建议这应该可以工作(注意,它说它可能返回Spel表达式):