此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring AMQP 3.2.0spring-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 来外部化队列名称。 以下示例显示了如何执行此作: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