Чтобы создать SimpleMessageListenerContainer, я делаю что-то вроде этого.
SimpleMessageConsumer simpleMessageConsumer = new SimpleMessageConsumer();
MessageListenerAdapter adapter =
new CustomMessageListenerAdapater(simpleMessageConsumer);
adapter.setDefaultListenerMethod("consume");
adapter.setMessageConverter(new SimpleMessageConverter());
SimpleMessageListenerContainer
container =
new SimpleMessageListenerContainer(connectionFactory);
container.setMessageListener(adapter);
Мой SimpleMessageConsumer
public void consume(String message){
log.info(message);
}
В Spring-amqp-refrence я заметил, что " аннотированная инфраструктура конечных точек прослушивателя "позволяет вам удобно передавать дополнительные свойства сообщения вашему потребителю, например, так:
@RabbitListener(queues = "myQueue")
public void processOrder(Order order, @Header("order_type") String orderType) {
...
}
Можно ли это сделать с помощью подхода создания потребителя, о котором я упоминал выше?Я хочу получить доступ к некоторым заголовкам объекта Message.Я знаю, что могу заставить моего потребителя реализовать MessageListener или ChannelAwareMessageListener и иметь доступ ко всему объекту Message.Однако мне не нужен весь объект Message, поскольку мне нравится удобство использования ContentTypeDelegatingMessageConverter с Jackson2JsonMessageConverter для преобразования в желаемый тип (в моем реальном приложении) до того, как мой потребительский делегированный метод будет запущен.