简体   繁体   中英

Getting message in ibmmq Node.js

I'm using ibmmq module https://github.com/ibm-messaging/mq-mqi-nodejs

I need to get an xml message from a queue and than make an xsl-transformation. I put messages to the queue with JMeter and if I browse messages in rfhutil I can see them as is on the Data tab. But when I get it in the code

 function getCB(err, hObj, gmo,md,buf, hConn ) {
   // If there is an error, prepare to exit by setting the ok flag to false.
   if (err) {...
   } else {
     if (md.Format=="MQSTR") {
       console.log("message <%s>", decoder.write(buf));
     } else {
       console.log("binary message: " + buf);
     }
  }

I get my message with some service information:

buf= RFH �"�MQSTR � <mcd><Msd>jms_text</Msd></mcd> X<jms><Dst>queue://MY_QM/MY_QUEUE</Dst><Tms>1657791724648</Tms><Dlv>2</Dlv></jms> ...My_message...

How can I get only My message like I do in rfhutil? I can get it with string methods, but it looks like crutches.

That message has the headers created by a JMS application. There are various ways of dealing with it. You can

  • Have the sending app disable sending that structure (setting the targClient property)
  • Use GMO options to ignore the properties (MQGMO_NO_PROPERTIES)
  • Have your application deal with the RFH2 stucture. See for example the amqsget.js sample in the Node.js repo which includes this fragment:
    switch (format) {
      case MQC.MQFMT_RF_HEADER_2:
        hdr   = mq.MQRFH2.getHeader(buf);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM