如何以编程方式从JMS消息中检索JMSMessage类值

如何以编程方式从JMS消息中检索JMSMessage类值,jms,ibm-mq,Jms,Ibm Mq,我使用JMS将消息放在MQ上,使用JMS类(而不是特定于MQ的类)读取和处理消息的MDB 当我打印消息(使用消息的toString()方法)时,我得到下面的输出 我想通过编程方式检索'jms\u text'、'jms\u bytes'等的值,视情况而定 我怎样才能做到这一点?我试图找到这些属性,但这也没有给我这些信息 +++ SAMPLE MDB: Text Message => Testing sending message to error queue [3/15/14 8:54:51

我使用JMS将消息放在MQ上,使用JMS类(而不是特定于MQ的类)读取和处理消息的MDB

当我打印消息(使用消息的toString()方法)时,我得到下面的输出

我想通过编程方式检索'jms\u text'、'jms\u bytes'等的值,视情况而定

我怎样才能做到这一点?我试图找到这些属性,但这也没有给我这些信息

+++ SAMPLE MDB: Text Message => Testing sending message to error queue
[3/15/14 8:54:51:988 EDT] 00000323 SystemOut     O Received message: 

 JMSMessage class: jms_text
 --------------------------
  JMSType:          null
  JMSDeliveryMode:  2
  JMSExpiration:    0
  JMSPriority:      4
  JMSMessageID:     ID:414d5120514458362020202020202020cc070d53025e4d22
  JMSTimestamp:     1394803436074
  JMSCorrelationID: null
  JMSDestination:   queue:///XX.MY.ERR.QUEUE
  JMSReplyTo:       null
  JMSRedelivered:   false
    JMSXAppID: WebSphere MQ Client for Java
    JMSXDeliveryCount: 1
    JMSXUserID: b8320      
    JMS_IBM_Character_Set: UTF-8
    JMS_IBM_Encoding: 273
    JMS_IBM_Format: MQSTR  
    JMS_IBM_MsgType: 8
    JMS_IBM_PutApplType: 28
    JMS_IBM_PutDate: 20140314
    JMS_IBM_PutTime: 13235615
Testing sending message to error queue 

感谢您的帮助更新:

您可以使用
instanceof
操作符来确定消息的类型。JMS定义了五种类型的消息文本、流、字节、映射和对象。因此,您可以进行如下检查:

if (rcvdMessage instanceof JMSTextMessage)
    msgType = "jms_text";
else if (rcvdMessage instanceof JMSStreamMessage)
    msgType = "jms_stream";
else if (rcvdMessage instanceof JMSMapMessage)
    msgType = "jms_map";
else if (rcvdMessage instanceof JMSBytesMessage)
    msgType = "jms_bytes";
else if (rcvdMessage instanceof JMSObjectMessage)
    msgType = "jms_object";
else
    msgType = "jms_none";

我已经试过了。它返回null或者从上面的输出返回
JMSType:null
我正在尝试获取JMSMessage类
JMSMessage类:jms_text
再次感谢。目前,这就是我正在使用的,也是我处理的方式,但我希望这些信息可以作为JMS方法,因为当我们打印它时,它总是作为Message.toString()的一部分打印的。