Listening to Multiple Queues

当你使用`queues`属性时,你可以指定关联的容器可以侦听多个队列。可以使用`@Header`注解使消息接收者的队列名称可用于 POJO 方法。以下示例演示了如何执行此操作:

@Component
public class MyService {

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

}

从版本 1.5 开始,你可以使用属性占位符和 SpEL 将队列名称外部化。以下示例演示了如何执行此操作:

@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 之前,只能以这种方式指定一个队列。每个队列都需要一个独立的属性。