handleMessage方法不会从队列中获取消息。如果没有MessageProperties,它可以正常工作。
如何在MessageListenerAdapter的handleMessage中获取MessageProperties?
public class EventMessageAdapter {
public void handleMessage(MessageProperties messageProperties, Event event) {
...
String id = messageProperties.getHeaders().get("key");
}
答案 0 :(得分:8)
您无法使用侦听器适配器执行此操作。
使用较新式的@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会自动为您创建一个。