2016-08-29 67 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。如果啓動器位於類路徑中,則Spring Boot爲您自動創建一個。