如何以编程方式从JMS消息中检索JMSMessage类值
我使用JMS将消息放在MQ上,使用JMS类(而不是特定于MQ的类)读取和处理消息的MDB 当我打印消息(使用消息的toString()方法)时,我得到下面的输出 我想通过编程方式检索'jms\u text'、'jms\u bytes'等的值,视情况而定 我怎样才能做到这一点?我试图找到这些属性,但这也没有给我这些信息如何以编程方式从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
+++ 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()的一部分打印的。