IBM Websphere MQ 将 javax.jms.TextMessage 显示为 <RFH >
IBM Websphere MQ displays javax.jms.TextMessage as <RFH >
我正在从 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
。
知道吗,我在这里缺少什么?
谢谢。
如果您使用另一个 JMS 程序检索消息,则消息数据将为 "Liberty Sample Message"。
您正在混合使用 JMS 和 non-JMS 程序类型。
.lookup("java:comp/env/jms/wmqQ1");
将 'TARGCLIENT' 属性设置为 MQ。即 TARGCLIENT(MQ)
那么消息数据将没有RFH2 header。
将 targetClient="MQ"
设置为 jmsQueue
的 属性 有效。
下面是 WLP 的 server.xml
中的配置更改:
<jmsQueue id="jms/queue1" jndiName="jms/wmqQ1">
<properties.wmqJms baseQueueManagerName="QMA" baseQueueName="QUEUE1" targetClient="MQ"/>
</jmsQueue>
我正在从 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
。
知道吗,我在这里缺少什么?
谢谢。
如果您使用另一个 JMS 程序检索消息,则消息数据将为 "Liberty Sample Message"。
您正在混合使用 JMS 和 non-JMS 程序类型。
.lookup("java:comp/env/jms/wmqQ1");
将 'TARGCLIENT' 属性设置为 MQ。即 TARGCLIENT(MQ)
那么消息数据将没有RFH2 header。
将 targetClient="MQ"
设置为 jmsQueue
的 属性 有效。
下面是 WLP 的 server.xml
中的配置更改:
<jmsQueue id="jms/queue1" jndiName="jms/wmqQ1">
<properties.wmqJms baseQueueManagerName="QMA" baseQueueName="QUEUE1" targetClient="MQ"/>
</jmsQueue>