java - 不带消息头的 MQMessage

标签 java jms websphere-8

我得到了一个很棒的 ConsumerClass ,但 WebsphereMQClasses 却遇到了一个问题。它没有提供消息,而是显示 _Whole_thing (JMSMessage 类:jms_text 等) 所以我想知道如何在没有标题的情况下获取消息。我发现了这个:

((MQDestination)destination).setMessageBodyStyle
                          (WMQConstants.WMQ_MESSAGE_BODY_MQ);

但它根本不起作用 这是我的类(class):

package mq.pack;

import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.ibm.jms.JMSMessage;
import com.ibm.jms.JMSTextMessage;
import com.ibm.mq.MQC;
import com.ibm.mq.jms.JMSC;
import com.ibm.mq.jms.MQConnection;
import com.ibm.mq.jms.MQConnectionFactory;
import com.ibm.mq.jms.MQMessageConsumer;
import com.ibm.mq.jms.MQSession;
import com.ibm.msg.client.wmq.WMQConstants;

public class Consumer {
private MQConnection cnct;
private MQSession session;
private MQMessageConsumer cons;

@SuppressWarnings("deprecation")
public void run() throws JMSException, NamingException, Throwable {
    try {

        MQConnectionFactory factory = new MQConnectionFactory();
        factory.setHostName("localhost");
        factory.setPort(1414);
        factory.setQueueManager("QM01");
        factory.setChannel("SYSTEM.DEF.SVRCONN");
        factory.setTransportType(WMQConstants.WMQ_CLIENT_NONJMS_MQ);
        cnct = (MQConnection) factory.createConnection();
        session = (MQSession) cnct.createSession(false, Session.AUTO_ACKNOWLEDGE);
        MQDestination queue =  (MQDestination) session.createQueue("QUEUE1");
        cnct.start();
        cons = (MQMessageConsumer) session.createConsumer(queue);
        JMSTextMessage msg = (JMSTextMessage) cons.receive(1000);


        if (msg instanceof TextMessage){
            System.out.println("Message:"+msg);
        }
        else {
            //String mes= msg.toString();
            System.out.println("No Textmessage");
        }
    } catch (Throwable e) {
        System.out.println(e);
    }
}
public static void main(String[]args) throws JMSException, NamingException, Throwable{

    Consumer send = new Consumer();
    send.run();

}
}

最佳答案

更改:

System.out.println("Message:"+msg);

至:

System.out.println("Message:"+msg.getText());

关于java - 不带消息头的 MQMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32969432/

相关文章:

java - 更改 Android 选项卡小部件内的 View

linux - 启动/停止 Websphere Application Server (WAS) 配置文件 - Unix/Linux

java - Websphere Application Server v8 无法连接到服务器进程

java - 如何在 Debug模式下跳过 Kafka 和 Zookeeper 日志

java - 如何从 Eclipse Kepler 中删除 EGIT?

java - 无法将 类型的对象转换为 JMS 消息。支持的消息有效负载为 : String, 字节数组、Map<String,?>、可序列化对象

java - JMS AUTO_ACKNOWLEDGE 何时确认?

java - jax-ws web 服务在 websphere 8.5 中不起作用

java - BufferedWriter 没有将所有内容写入其输出文件

java - 使用 JMS/ActiveMQ 并发同步请求-回复 - 模式/库?