如果我在其签名中添加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会自动为您创建一个。

10-02 04:50