Spring amqp:如何读取 MessageListenerAdapter 中的 MessageProperties
Spring amqp: How can I read MessageProperties in MessageListenerAdapter
如果我在其签名中添加 MessageProperties,handleMessage 方法不会从队列中获取消息。如果没有 MessageProperties,它工作正常。
如何获取MessageListenerAdapter的handleMessage中的MessageProperties?
public class EventMessageAdapter {
public void handleMessage(MessageProperties messageProperties, Event event) {
...
String id = messageProperties.getHeaders().get("key");
}
你不能用侦听器适配器做到这一点。
使用新式 @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 会自动为您创建一个。
如果我在其签名中添加 MessageProperties,handleMessage 方法不会从队列中获取消息。如果没有 MessageProperties,它工作正常。
如何获取MessageListenerAdapter的handleMessage中的MessageProperties?
public class EventMessageAdapter {
public void handleMessage(MessageProperties messageProperties, Event event) {
...
String id = messageProperties.getHeaders().get("key");
}
你不能用侦听器适配器做到这一点。
使用新式 @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 会自动为您创建一个。