2015-02-24 71 views
3

我有一些服務,一個用Grails 2.4.2(Spring 4.0.5)實現,一些用Spring Web(Spring 4.0.5)實現,另一個用Spring Boot 1.2.1(Spring 4.1)實現。 4)。

服務通過RabbitMQ與Spring集成進行通信。

Grails和Spring Web服務之間的通信很好,但不能與Spring Boot服務進行通信。由於Spring Boot使用更新的Spring版本,並且MessageHeader類的序列版本已更改。

Spring集成序列化MessageHeader對象

我該怎麼做才能避免這個問題?

這裏的例外:

Caused by: org.springframework.messaging.MessagingException: Failure occured in AMQP listener while attempting to convert and dispatch Message.; nested exception is org.springframework.amqp.support.converter.MessageConversionException: failed to convert serialized 
Message content 
     at org.springframework.integration.amqp.channel.AbstractSubscribableAmqpChannel$DispatchingMessageListener.onMessage(AbstractSubscribableAmqpChannel.java:201) ~[spring-integration-amqp-4.0.2.RELEASE.jar:na] 
     at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:693) ~[spring-rabbit-1.3.4.RELEASE.jar:na] 
     ... 10 common frames omitted 
Caused by: org.springframework.amqp.support.converter.MessageConversionException: failed to convert serialized Message content 
     at org.springframework.amqp.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:112) ~[spring-amqp-1.3.4.RELEASE.jar:na] 
     at org.springframework.integration.amqp.channel.AbstractSubscribableAmqpChannel$DispatchingMessageListener.onMessage(AbstractSubscribableAmqpChannel.java:176) ~[spring-integration-amqp-4.0.2.RELEASE.jar:na] 
     ... 11 common frames omitted 
Caused by: java.lang.IllegalArgumentException: Could not deserialize object 
     at org.springframework.amqp.utils.SerializationUtils.deserialize(SerializationUtils.java:79) ~[spring-amqp-1.3.4.RELEASE.jar:na] 
     at org.springframework.amqp.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:107) ~[spring-amqp-1.3.4.RELEASE.jar:na] 
     ... 12 common frames omitted 
Caused by: java.io.InvalidClassException: org.springframework.messaging.MessageHeaders; local class incompatible: stream classdesc serialVersionUID = -4615750558355702881, local class serialVersionUID = 7035068984263400920 
     at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617) ~[na:1.7.0_51] 
     at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622) ~[na:1.7.0_51] 
     at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) ~[na:1.7.0_51] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) ~[na:1.7.0_51] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51] 
>  at org.springframework.amqp.utils.SerializationUtils.deserialize(SerializationUtils.java:76) ~[spring-amqp-1.3.4.RELEASE.jar:na]

回答

1

不要序列整個Message<?>;使用AMQP適配器將Message標頭映射到amqp標頭的能力,反之亦然。

我不確定這是如何工作在grails方面,但你也需要做那裏的映射。