请使用 Spring AMQP 4.0.2(最新稳定版本)!spring-doc.cadn.net.cn

监听多个队列

当你使用 queues 属性时,可以指定关联的容器能够监听多个队列。你可以使用 @Header 注解,使消息所来自的队列名称对 POJO 方法可用。以下示例展示了如何实现这一点:spring-doc.cadn.net.cn

@Component
public class MyService {

    @RabbitListener(queues = { "queue1", "queue2" } )
    public void processOrder(String data, @Header(AmqpHeaders.CONSUMER_QUEUE) String queue) {
        ...
    }

}

从版本 1.5 开始,您可以通过使用属性占位符和 SpEL 将队列名称外部化。<br/>以下示例展示了如何实现这一点:spring-doc.cadn.net.cn

@Component
public class MyService {

    @RabbitListener(queues = "#{'${property.with.comma.delimited.queue.names}'.split(',')}" )
    public void processOrder(String data, @Header(AmqpHeaders.CONSUMER_QUEUE) String queue) {
        ...
    }

}

在 1.5 版本之前,只能以这种方式指定单个队列。每个队列都需要一个单独的属性。spring-doc.cadn.net.cn