Spring integration Spring集成:接收消息时出现异常

Spring integration Spring集成:接收消息时出现异常,spring-integration,spring-jms,Spring Integration,Spring Jms,在我们的Spring集成应用程序中,当收到一条消息时,会抛出一个异常,而转换器不会收到该消息。 我认为这可能是由于消息的内容,因为字符串类型的消息处理正确 以下是此消息类型的转换器的签名: @Transformer public String transform(Message inboundMessage){ 也尝试过 @Transformer public String transform(Byte[] inboundMessage){ 但在这两种情况下,都会引发以下异常: 2013-1

在我们的Spring集成应用程序中,当收到一条消息时,会抛出一个异常,而转换器不会收到该消息。 我认为这可能是由于消息的内容,因为字符串类型的消息处理正确

以下是此消息类型的转换器的签名:

@Transformer
public String transform(Message inboundMessage){
也尝试过

@Transformer
public String transform(Byte[] inboundMessage){
但在这两种情况下,都会引发以下异常:

2013-10-14 07:21:33,547 D|DefaultMessageListenerContainer         |Received message of type [class com.solacesystems.jms.message.SolTextMessage] from consumer [Cached JMS MessageConsumer: com.solacesystems.jms.SolQueueReceiver@13b5500] of session [Cached JMS Session: com.solacesystems.jms.SolSession@1fa0f19]
2013-10-14 07:21:33,579 W|DefaultMessageListenerContainer         |Execution of JMS message listener failed, and no ErrorHandler has been set.
java.lang.RuntimeException: UTF-8 format error
    at com.solacesystems.common.util.UTF8Util.getStringFromUTF8(UTF8Util.java:272) ~[sol-common-6.0.0.146.jar:na]
    at com.solacesystems.jms.message.SolTextMessage.load(SolTextMessage.java:82) ~[sol-jms-6.0.0.146.jar:na]
    at com.solacesystems.jms.message.SolTextMessage.getText(SolTextMessage.java:69) ~[sol-jms-6.0.0.146.jar:na]
    at org.springframework.jms.support.converter.SimpleMessageConverter.extractStringFromMessage(SimpleMessageConverter.java:177) ~[spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.jms.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:94) ~[spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.integration.jms.ChannelPublishingJmsMessageListener.onMessage(ChannelPublishingJmsMessageListener.java:266) ~[spring-integration-jms-2.2.0.RC2.jar:na]
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:537) ~[spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:497) ~[spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:468) ~[spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:326) [spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:264) [spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1071) [spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1063) [spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:960) [spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at java.lang.Thread.run(Unknown Source) [na:1.6.0_06]
2013-10-14 07:21:33,579 D|SolMessageConsumer                      |Entering receive(), timeout: 1000
2013-10-14 07:21:34,391 D|SolMessageConsumer                      |Leaving receive()

非常感谢您提供的任何帮助

您的帮助远不及变压器。当Spring调用
getText
…时,Solace库中存在问题

java.lang.RuntimeException: UTF-8 format error
at com.solacesystems.common.util.UTF8Util.getStringFromUTF8(UTF8Util.java:272) ~[sol-common-6.0.0.146.jar:na]
at com.solacesystems.jms.message.SolTextMessage.load(SolTextMessage.java:82) ~[sol-jms-6.0.0.146.jar:na]
at com.solacesystems.jms.message.SolTextMessage.getText(SolTextMessage.java:69) ~[sol-jms-6.0.0.146.jar:na]
at org.springframework.jms.support.converter.SimpleMessageConverter.extractStringFromMessage(SimpleMessageConverter.java:177) ~[spring-jms-3.1.2.RELEASE.jar:3.1.2.RELEASE]
...

看起来图书馆认为数据是UTF-8格式,而实际上不是。

Gary,谢谢。有没有可能Spring正在调用getText(),因此Solace将消息视为文本,即使它不是文本?有没有办法告诉SpringIntegration这不是一条文本消息,而是一条二进制消息;如果消息转换器是
TextMessage
,它将只调用
getText()
;它显然是一条短信(
SolTextMessage
);不知何故,字符编码是错误的。似乎是产生消息的任何东西导致了问题。二进制数据应存储在
字节消息
中,而不是
文本消息
中。Spring尝试转换的消息类型由代理控制,而不是由Spring控制。