I had problems using the MQI Interface to create a message for a JMS program to receive.
To see what was in the JMS message, I used a Java program using JMS to write a message, and used my trusty C program to display it.
I could see that there were message properties in the message
Property 0 name <mcd.Msd> value <jms_text>
Property 1 name <jms.Dst> value <queue:///JMSQ1>
Property 2 name <jms.Rto> value <queue:///JMSQ2>
Property 3 name <jms.Tms> value <1571902099742>
Property 4 name <jms.Dlv> value <2>
These are described here.
The mcd.Msd value is one of jms_none, jms_text, jms_bytes, jms_map, jms_stream, jms_object. This depends on whether you use Message message, BytesMessage message etc to define your message type. The jms program receiving the message may be expecting a particular type
The jms.Rto comes from the message.setJMSReplyTo(…). It was set in the MQMD.ReplyToQ as well as the message property.
It took me some time to find how to specify value such as for deliveryMode. I found it here. For example message.setDeliveryMode(DeliveryMode.NON_PERSISTENT
). (This comes from javax.jms.DeliveryMode.NON_PERSISTENT,
not a com.ibm…. file).
I converted my simple program from JMQI to JMS, in a couple of hours, and was surprised to find it used fewer lines of code than using the JMQI. Of course I may find I omitted some work, such as error handling, but it seems to be working OK.
One thought on “What’s the difference between an MQ Message and a JMS Message”