我在spring-int聚合器组件中使用jdbc-store时遇到问题。
我的流程是这样的:
ActiveMQ - >聚合器 - > jdbc-message-store - > FTP
但是在处理消息时,我遇到了java.io.NotSerializableException,因为ActiveMQTextMessage不可序列化。
当我使用simpleMessageStore(在内存中)时,这个解决方案正常运行,但我现在无法让它工作。
我是否需要创建自己的MessageHandler实现来将ActiveMQTextMessage转换为正确的Serializable消息,或者我做错了什么?
感谢。
<int-jms:message-driven-channel-adapter id="inputQueueAdapter"
channel="mqChannel"
max-concurrent-consumers="3"
cache-level="3"
extract-payload="true"
connection-factory="jmsConnectionFactory"
destination-name="test.xdr.queue"/>
<int:aggregator id="XDRAggegator"
ref="xdrAggregator"
input-channel="mqChannel"
output-channel="publishChannel"
message-store="jdbc-messageStore"
/>
<int-jdbc:message-store id="jdbc-messageStore" data-source="dataSource" />
答案 0 :(得分:1)
您确定此处显示的是extract-payload="true"
吗?
如果为false,则JMS消息本身是有效负载,而当为true时,使用消息转换器转换(例如,JmsTextMessage转换为String)。
启用DEBUG
日志记录,并在mqChannel
中检查邮件的有效内容。