对于最新稳定版本,请使用Spring AMQP 4.0.0spring-doc.cadn.net.cn

监听多队列

当你使用队列属性,你可以指定相关的容器可以监听多个队列。 你可以用@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来外部化队列名称。 以下示例展示了如何实现: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