我使用简单的Spring JmsTemplate将消息发送到MQ。

<beans:bean id="myJMSTemplate" class="org.springframework.jms.core.JmsTemplate">
    <beans:property name="connectionFactory">
        <beans:ref bean="cachedConnectionFactory" />
    </beans:property>
    <beans:property name="pubSubDomain">
        <beans:value>false</beans:value>
    </beans:property>
    <beans:property name="receiveTimeout">
        <beans:value>1000</beans:value>
    </beans:property>
</beans:bean>

    <int-jms:outbound-channel-adapter id="sendMessageToAvengers" channel="antEventChannel" jms-template="myJMSTemplate" destination-name='com.marvel.avengers.antMan'/>

效果很好,但是,由于默认情况下消息格式为“MQHRF2”,因此我的客户端应用程序无法处理消息。
如何更改我的MQ头,以便显式发送MQSTR格式。

提前致谢。

最佳答案

您必须设置属性targetcllient = 1才能将消息作为MQSTR发送。
要在发送部分Java代码时执行此操作,请如下更改队列名称

String senderQ = "queue:///MYQUEUENAME?targetClient=1";
jmsTemplate.send(senderQ, new MessageCreator() {
    public Message createMessage(Session session) throws JMSException {
         TextMessage message = session.createTextMessage(text);
         message.setJMSReplyTo(replyToQ);
         return message;
    }
});

或者,您可以尝试在jmstemplate bean中设置此设置
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <!-- set format to MQSTR with "targetClient=1" parameter -->
    <property name="defaultDestinationName" value="queue:///default?targetClient=1" />
    <property name="connectionFactory" ref="mqConnectionFactory" />
</bean>

10-05 23:00