【发布时间】:2014-09-15 19:00:10
【问题描述】:
我使用下面的配置来发送带有对象负载的 JMS 消息(比如说 HelloWorld 对象),但是当我使用消息驱动的适配器接收消息时,负载被转换为字节 []。
有没有办法防止这种情况发生?我看到出站适配器最终调用 SimpleMessageConverter 方法`createMessageForSerializable --> session.createObjectMessage(object)
<si:chain input-channel="errorChannelIn">
<si:router
expression="headers.jms_redelivered.equals(T(java.lang.Boolean).FALSE) ? 'errorQueueChannel' : 'channel2Name' "
apply-sequence="true">
<si:mapping value="errorQueueChannel" channel="errorChannel"/>
<si:mapping value="channel2Name" channel="channel2"/>
</si:router>
</si:chain>
<si-jms:outbound-channel-adapter id="errorQueueMessageSender"
channel="errorChannel"
connection-factory="connectionFactory" session-transacted="true" destination="errorQueue"
/>
但是,当我使用 JmsTemplate 发送消息时,它完美地将消息作为 messageObject 发送,并且消息驱动的适配器将对象作为有效负载。代码如下:sn-p。
知道我哪里出错了。
jmsTemplate.send(new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createObjectMessage(messageObject);
}
});
【问题讨论】: