IBM Websphere MQ将javax.jms.TextMessage显示为<rfh>

时间:2015-09-23 15:12:08

标签: java queue jms ibm-mq websphere-liberty

我正在从Java代码向Websphere MQ Server发送消息,当我在MQ服务器上读取相同的消息时,它显示为:

message<RFH >

以下是将消息发送到MQ服务器的代码:

private void sendMessage() throws Exception {
        ConnectionFactory cf1 = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms/wmqCF");

        // Lookup Queue resource from JNDI
        Queue queue = (Queue) new InitialContext().lookup("java:comp/env/jms/wmqQ1");
        Connection con = cf1.createConnection();

        // start the connection to receive message
        con.start();

        // create a queue session to send a message
        Session sessionSender = con.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);

        MessageProducer send = sessionSender.createProducer(queue);

        TextMessage msg = sessionSender.createTextMessage("Liberty Sample Message");

        // send a sample message
        send.send(msg);

        if (con != null)
            con.close();
        System.out.println("Send Message Completed");
    }

预计显示为:Liberty Sample Message

任何想法,我在这里缺少什么?

感谢。

2 个答案:

答案 0 :(得分:1)

如果您使用其他JMS程序检索消息,则消息数据将为“Liberty Sample Message”。

您正在混合使用JMS和非JMS程序类型。

  

.lookup( “Java的:comp / env的/ JMS / wmqQ1”);

将'TARGCLIENT'属性设置为MQ。即TARGCLIENT(MQ)

然后消息数据将没有RFH2标头。

答案 1 :(得分:0)

targetClient="MQ" 设置为jmsQueue的属性有效。

以下是WLPserver.xml中的配置更改:

<jmsQueue id="jms/queue1" jndiName="jms/wmqQ1">
    <properties.wmqJms baseQueueManagerName="QMA" baseQueueName="QUEUE1" targetClient="MQ"/>
</jmsQueue>