在IBM MQ中设置MQRFH2标头时出现问题 [英] Issue While Setting MQRFH2 header in IBM MQ
问题描述
我正在尝试发送设置了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屋!