监听多个队列
当你使用 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 版本之前,只能通过这种方式指定单个队列。每个队列都需要一个单独的属性。