2016-08-29 3 views
0

Метод handleMessage не получает сообщение из очереди, если я добавляю MessageProperties в свою подпись. Он отлично работает, если нет MessageProperties.Spring amqp: Как я могу прочитать MessageProperties в MessageListenerAdapter

Как я могу получить MessageProperties в handleMessage MessageListenerAdapter?

public class EventMessageAdapter { 

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

ответ

2

Вы не можете сделать это с помощью адаптера слушателя.

Использовать механизм @RabbitListener нового типа docs here.

Вы можете использовать различные подписи ...

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

или

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

Во втором случае вы можете получить все свойства сообщения через message.getMessageProperties().

Вам нужен container factory. Spring Boot автоматически создает для вас, если стартер находится в пути к классам.