我想使用特定的模式使用队列名称,例如project.{queue-name}.queue
。为了保持此模式的牢固性,我编写了一个帮助程序类,以通过简单的标识符生成此名称。因此,foo
将生成一个称为project.foo.queue
的队列。简单。
但是,注释RabbitListener
需要一个常量字符串,并使用我的助手类给我一个错误。如何使用RabbitListener
注释实现此目标(或其他方法)?
@Component
public class FooListener {
// it doesn't work
@RabbitListener(queues = QueueName.for("foo"))
// it works
@RabbitListener(queues = "project.foo.queue")
void receive(final FooMessage message) {
// ...
}
}
如果{queue-name}
来自yml
文件-它应该可以工作:
@RabbitListener(queues = "${queue-name}")
public void receiveMessage(FooMessage message) {
}
Spring将从application.yml
注入值。