在IBM MQ中设置MQRFH2标头时出现问题 [英] Issue While Setting MQRFH2 header in IBM MQ

查看:271
本文介绍了在IBM MQ中设置MQRFH2标头时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试发送设置了MD和RFH2标头的MQ消息. 我需要该消息在AppWatch上显示为这样.

I am trying to send an MQ Message with MD and RFH2 headers set. I need the Message to appear like this on AppWatch.

但是RFH2部分作为连续字符串作为消息数据的一部分出现.

am使用以下代码:

MQMessage msg = new MQMessage();
msg.writeString("Data to go as Message Content"); 

//Setting MQMD values
msg.persistence = MQConstants.MQPER_PERSISTANT;
msg.encoding = MQConstants.MQENC_S390;
msg.characterSet = 500;

//Setting RFH2 Values
MQRFH2 rfh2 = new MQRFH2();
rfh2.setEncoding(CMSQC.MQENC_NATIVE);
rfh2.setCodedCharSetId(CMSQC.MQCCSI_INHERIT);
rfh2.setFormat(CMSQC.MQFMT_STRING);
rfh2.setFlags(0);
rfh2.setNameValueCCSID(1208);
rfh2.setFieldValue("mcd","msd","jms_text");
rfh2.setNameValueData(<xml><usr><ENTRYNUM>123</ENTRYNUM><text>TEST123</text></usr></xml>);

//Setting the Header to the Message
rfh2.write(msg);

MQQueue queue = qmngr.accessQueue(qname,MQConstants.MQOO_OUTPUT);
queue.put(msg,pmo);
queue.close;

有人可以帮助我正确设置RFH2值吗?

Can someone help me out in setting the RFH2 Values properly.

注意:以上屏幕截图只是一个示例,代码与该屏幕截图无关

NOTE: The above screenshot is just a sample and code is not related to that screenshot

推荐答案

我可以通过稍微修改代码而不使用MQRFH2类来查看屏幕快照中显示的消息.

I was able to view the message as displayed in the screenshot by modifying the code a bit and not using the MQRFH2 class.

我还必须考虑到罗杰(Roger)在他的回答中提出的要点,即首先设置标头,然后再设置消息有效负载.

I also had to take into consideration the point suggested by Roger in his answer to set the headers first and then the message payload.

参考: http://www.mqseries.net/phpBB2/viewtopic .php?t = 35456

  String m_usr_data = "<usr><ENTRYNUM>123</ENTRYNUM><text>TEST123</text></usr>"
  MQMessage msg = new MQMessage();

  //Setting MQMD values
  msg.persistence = CMQC.MQPER_PERSISTANT;
  msg.format = CMQC.MQFMT_RF_HEADER_2;

  //Setting RFH2 Values
  msg.writeString(rfhStrucID);      //StrucID 
  msg.writeInt4(rfhVersion);        //Version 
  msg.writeInt4(rfhStrucLength );     //StrucLength 
  msg.writeInt4(CMQC.MQENC_NATIVE);       //Encoding 
  msg.writeInt4(CMQC.MQCCSI_INHERIT); //CodedCharSetID 
  msg.writeString(CMQC.MQFMT_STRING);       //Format 
  msg.writeInt4(0);          //Flags 
  msg.writeInt4(1208); //NameValueCCSID 
  msg.writeInt4(m_usr_data.getBytes().length);//NameValueLength <usr> 
  msg.writeString(m_usr_data);      //NameValueData <usr> 
  msg.write(rfhDataBytes);       //Actual MESSAGE data 

  msg.writeString("Data to go as Message Content");

  MQQueue queue = qmngr.accessQueue(qname, CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_OUTPUT);
  queue.put(msg,pmo);
  queue.close;

这篇关于在IBM MQ中设置MQRFH2标头时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆