Spring 集成序列化 MessageHeader 对象

Spring Integration serializes MessageHeader Object

我有一些服务,一种是用 Grails 2.4.2 (Spring 4.0.5) 实现的,一些是用 Spring Web (Spring 4.0.5) 实现的,另一种是用Spring 引导 1.2.1(Spring 4.1.4)。

这些服务通过 RabbitMQ 与 spring-integration.

进行通信 Grails 与 Spring Web 服务之间的通信正常,但无法与 Spring 引导服务通信。因为Spring Boot使用更新的Spring版本并且MessageHeaderclass的串行版本已经改变。

我该怎么做才能避免这个问题?

这里是例外:

原因:org.springframework.messaging.MessagingException:尝试转换和发送消息时 AMQP 侦听器发生故障。嵌套异常是 org.springframework.amqp.support.converter.MessageConversionException: 序列化转换失败
 留言内容
        在 org.springframework.integration.amqp.channel.AbstractSubscribableAmqpChannel$DispatchingMessageListener.onMessage(AbstractSubscribableAmqpChannel.java:201) ~[spring-integration-amqp-4.0.2.RELEASE.jar:na]
        在 org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:693) ~[spring-rabbit-1.3.4.RELEASE.jar:na]
        ...省略了 10 个常见框架
Caused by: org.springframework.amqp.support.converter.MessageConversionException: 序列化消息内容转换失败
        在 org.springframework.amqp.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:112) ~[spring-amqp-1.3.4.RELEASE.jar:na]
        在 org.springframework.integration.amqp.channel.AbstractSubscribableAmqpChannel$DispatchingMessageListener.onMessage(AbstractSubscribableAmqpChannel.java:176) ~[spring-integration-amqp-4.0.2.RELEASE.jar:na]
        ... 省略了 11 个常见框架
原因:java.lang.IllegalArgumentException:无法反序列化对象
        在 org.springframework.amqp.utils.SerializationUtils.deserialize(SerializationUtils.java:79) ~[spring-amqp-1.3.4.RELEASE.jar:na]
        在 org.springframework.amqp.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:107) ~[spring-amqp-1.3.4.RELEASE.jar:na]
        ... 省略了 12 个公共框架
原因:java.io.InvalidClassException:org.springframework.messaging.MessageHeaders;本地 class 不兼容:流 classdesc serialVersionUID = -4615750558355702881,本地 class serialVersionUID = 7035068984263400920
        在 java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617) ~[na:1.7.0_51]
        在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622) ~[na:1.7.0_51]
        在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) ~[na:1.7.0_51]
        在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) ~[na:1.7.0_51]
        在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]
> 在 org.springframework.amqp.utils.SerializationUtils.deserialize(SerializationUtils.java:76) ~[spring-amqp-1.3.4.RELEASE.jar:na]

不要序列化整个Message<?>;使用 AMQP 适配器将 Message headers 映射到 amqp headers 和 vice-versa.

的能力

我不确定它在 grails 端是如何工作的,但你也需要在那里进行映射。