Java Spring JMS模板发送无效消息
我在使用SpringJMSTemplate处理和发送JMS消息时遇到问题。所有内容都正确发送,但当我尝试查看队列中的消息时,消息的正文文本似乎都是乱码。我不确定在我的设置中哪里可能出了问题…我使用了与当前使用的相同的方法发送消息。以前有人见过这个吗Java Spring JMS模板发送无效消息,java,spring,marshalling,spring-jms,Java,Spring,Marshalling,Spring Jms,我在使用SpringJMSTemplate处理和发送JMS消息时遇到问题。所有内容都正确发送,但当我尝试查看队列中的消息时,消息的正文文本似乎都是乱码。我不确定在我的设置中哪里可能出了问题…我使用了与当前使用的相同的方法发送消息。以前有人见过这个吗 <!-- Non-pooled ConnectionFactory, don't use directly --> <jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connecti
<!-- Non-pooled ConnectionFactory, don't use directly -->
<jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connectionFactory}"/>
<!-- JMS Destinations -->
<jee:jndi-lookup id="emfTopic" jndi-name="${emf.topic.jndiPath}"/>
<!-- JMS Template for sending JMS Messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="messageConverter" ref="messageConverter"/>
</bean>
<!-- A converter that marshalls/unmarshalls XML messages -->
<bean id ="messageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
<property name="marshaller" ref="jaxbMarshaller"/>
<property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>
<!-- JAXB Marshaller for JMS Messages -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>...`
以下是消息正文在发送后的外观片段:
00000000:3c3f 786d 6c20 7665 7273 696f 6e3d 2231.?xml版本。”1
00000010:2e30 2220 656e 636f 6469 6e67 3d22 5554.0“编码”。UT
00000020:462d 3822 2073 7461 6e64 616c 6f6e 653d F.8“独立式。
000000 30:2279 6573 223f 3e3c 7072 6f64 7563 7445“是”?产品
<!-- Non-pooled ConnectionFactory, don't use directly -->
<jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connectionFactory}"/>
<!-- JMS Destinations -->
<jee:jndi-lookup id="emfTopic" jndi-name="${emf.topic.jndiPath}"/>
<!-- JMS Template for sending JMS Messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="messageConverter" ref="messageConverter"/>
</bean>
<!-- A converter that marshalls/unmarshalls XML messages -->
<bean id ="messageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
<property name="marshaller" ref="jaxbMarshaller"/>
<property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>
<!-- JAXB Marshaller for JMS Messages -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>...`
我的模板和封送员设置如下:
<!-- Non-pooled ConnectionFactory, don't use directly -->
<jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connectionFactory}"/>
<!-- JMS Destinations -->
<jee:jndi-lookup id="emfTopic" jndi-name="${emf.topic.jndiPath}"/>
<!-- JMS Template for sending JMS Messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="messageConverter" ref="messageConverter"/>
</bean>
<!-- A converter that marshalls/unmarshalls XML messages -->
<bean id ="messageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
<property name="marshaller" ref="jaxbMarshaller"/>
<property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>
<!-- JAXB Marshaller for JMS Messages -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>...`
在此问题上的任何帮助都将不胜感激 Stéphane的评论就是问题所在。我没有显式地将targetType设置为TextMessage,因此它是作为ByItemMessage发送的,因为这是默认设置。更改targetType解决了此问题。您是否可以共享您发送的消息,以检查两者之间是否存在任何关系。您没有提供足够的关于最重要部分的详细信息。您的封送员的目标类型是什么?请注意,
MarshallingMessageConverter
默认使用字节,因此您的xml文档将作为BytesMessage
发送。如果要按原样发送XML,请将targetType
设置为text(在TextMessage
中)
<!-- Non-pooled ConnectionFactory, don't use directly -->
<jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connectionFactory}"/>
<!-- JMS Destinations -->
<jee:jndi-lookup id="emfTopic" jndi-name="${emf.topic.jndiPath}"/>
<!-- JMS Template for sending JMS Messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="messageConverter" ref="messageConverter"/>
</bean>
<!-- A converter that marshalls/unmarshalls XML messages -->
<bean id ="messageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
<property name="marshaller" ref="jaxbMarshaller"/>
<property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>
<!-- JAXB Marshaller for JMS Messages -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>...`