RabbitListener注释上的动态队列

问题描述 投票:0回答:1

我想使用特定的模式使用队列名称,例如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) {
       // ...
    }
}
java spring rabbitmq
1个回答
2
投票

如果{queue-name}来自yml文件-它应该可以工作:

@RabbitListener(queues = "${queue-name}")
public void receiveMessage(FooMessage message) {

}

Spring将从application.yml注入值。

© www.soinside.com 2019 - 2024. All rights reserved.