Мне нужно определить маршрут, который читает сообщение (имеет xml) из темы и демаршалирует его в java bean.
Раньше я использовал spring JmsTemplate для управления connectionFactory для этой темы, и мой маршрут выглядел примерно так (и он работал нормально). Конвертер сообщений по существу возвращает экземпляр TextMessage
в методе fromMessage()
JaxbDataFormat dataFormat = new JaxbDataFormat();
dataFormat.setContextPath("com.somepath.xml");
from("jms:topic:myTopic?transacted=true&connectionFactory=myJmsConnectionFactory&messageConverter=#myMessageConverter")
.transacted()
.unmarshal(dataFormat)
.routeId("myRouteId")
Теперь вместо JmsTemplate я использую org.springframework.jms.listener.DefaultMessageListenerContainer
для подключения к этой устойчивой теме.
(Также потому, что он поддерживает асинхронный режим)
Для этого я написал свой собственный прослушиватель сообщений, который реализует javax.jms.MessageListener
, и я прочитал сообщение в onMessage()
. Но я не могу вернуть TextMessage отсюда, как раньше, когда используется JmsTemplate.
Я не знаю, как мне настроить это в определении маршрута, чтобы он по-прежнему поддерживал немаршаллинг?