監聽多個佇列

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

© . This site is unofficial and not affiliated with VMware.