監聽多個佇列
當您使用 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 之前的版本中,只能以這種方式指定單個佇列。每個佇列都需要單獨的屬性。