跳到主要内容
版本:4.1.1

监听多个队列

Doubao 中英对照 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 版之前,只能以这种方式指定单个队列。每个队列都需要一个单独的属性。