Spring amqp:如何在MessageListenerAdapter中读取MessageProperties

use*_*371 3 rabbitmq spring-amqp spring-rabbitmq

如果我在其签名中添加MessageProperties,handleMessage方法不会从队列中获取消息.如果没有MessageProperties,它可以正常工作.

如何在MessageListenerAdapter的handleMessage中获取MessageProperties?

public class EventMessageAdapter {

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

Gar*_*ell 9

您无法使用侦听器适配器执行此操作.

这里使用较新式的@RabbitListener机制文档.

你可以使用各种签名......

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

要么

@RabbitListener(queues = "bar")
public void bar(Event event, Message message) {...}
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,您可以通过获取所有消息属性 message.getMessageProperties().

你需要一个集装箱工厂.如果启动器在类路径上,则Spring Boot会自动为您创建一个.