我正在使用JMS在MQ和使用JMS类(而不是MQ特定类)的MDB上发送消息来读取和处理消息。
当我打印消息时(使用消息' sString()方法,我得到下面的输出
我希望以编程方式检索' jms_text',' jms_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
感谢您的帮助
答案 0 :(得分:1)
<强>更新强>
您可以使用instanceof
运算符来确定消息的类型。 JMS定义了五种类型的消息Text,Stream,Bytes,Map和Object。所以你可以检查如下:
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";