2016-08-29 1 views
0

HandleMessage-Methode ruft die Nachricht aus Warteschlange nicht ab, wenn ich MessageProperties in seiner Signatur hinzufüge. Es funktioniert einwandfrei, wenn keine MessageProperties vorhanden sind.Spring amqp: Wie kann ich MessageProperties in MessageListenerAdapter lesen

Wie kann ich MessageProperties in handleMessage von MessageListenerAdapter erhalten?

public class EventMessageAdapter { 

    public void handleMessage(MessageProperties messageProperties, Event event) { 
    ... 
    String id = messageProperties.getHeaders().get("key"); 
} 

Antwort

2

Sie können es nicht mit dem Listener-Adapter tun.

Verwenden Sie den neueren @RabbitListener Mechanismus docs here.

Sie verschiedene Signaturen verwenden können ...

@RabbitListener(queues = "foo") 
public void foo(Event event, @Header("foo") String fooHeader, 
      @Header("bar") Integer barHeader) {...} 

oder

@RabbitListener(queues = "bar") 
public void bar(Event event, Message message) {...} 

Im zweiten Fall können Sie alle Nachrichteneigenschaften über message.getMessageProperties() erhalten.

Sie benötigen eine container factory. Spring Boot erstellt automatisch einen für Sie, wenn der Starter im Klassenpfad ist.

Verwandte Themen