Я создаю Spring MessageListenerAdapter, который прослушивает Очередь для XML сообщений.
Это моя конфигурация amqp:
@Bean()
SimpleMessageListenerContainer simpleMessageListenerContainer(ConnectionFactory connectionFactory,
MessageListenerAdapter messageListener) {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames("queueA", "queueB");
container.setMessageListener(messageListener);
container.setChannelTransacted(true);
return container;
}
@Bean
MessageListenerAdapter messageListener(Receiver receiver) {
return new MessageListenerAdapter(receiver, "receiveMessage");
}
В настоящее время прием сообщений работает, но только если тип моего слушателя возвращается String
.
При следующем слушателе я получаю XML сообщения, так что это нормально. Но я не могу получить messageProperties
исходного сообщения:
@Component
public class Receiver {
public void receiveMessage(String message) {
try {
if (message.isEmpty()) {
log.info("---> Received message is empty!");
} else {
log.info("---> Received message: <{}>", message);
}
} catch (Exception e) {
log.error("---> Exception in processing receiv
ed message!", e);
}
}
}
Если я изменю тип возврата receiveMessage () на bytes[]
или Message
, Я получаю следующее сообщение об ошибке:
org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Failed to invoke target method 'receiveMessage' with argument type = [class java.lang.String], value = [{myXmlMessage}]
Я уже пробовал MessageConverters, но я новичок ie с RabbitMQ. Спасибо за любую помощь!