2016-08-29 5 views
0

MessageProperties를 서명에 추가하면 handleMessage 메소드가 대기열에서 메시지를 가져 오지 않습니다. MessageProperties가 없으면 잘 작동합니다.Spring amqp : MessageListenerAdapter에서 MessageProperties를 읽는 방법은 무엇입니까?

MessageListenerAdapter의 handleMessage에서 MessageProperties를 어떻게 얻을 수 있습니까?

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이 필요합니다. 스타터가 클래스 패스에 있으면 스프링 부트가 자동으로 생성됩니다.