複数のキューをリッスンする
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 より前では、この方法で指定できるキューは 1 つだけでした。各キューには個別のプロパティが必要でした。