【问题标题】:Adding Personalized data to MQ RFH2 Header将个性化数据添加到 MQ RFH2 标头
【发布时间】:2017-04-20 01:48:30
【问题描述】:

您好,我正在尝试在 RFH2 MQ 标头中添加数据。 我想要的数据格式是:

struc id : RFH
version:2
encoding:546
CodedCharSetid:437
Format:MQSTR
Flags:0
NameValeCCSID:1208
NamevalueLen:56
Namevaluedata:<mcd><msd>jms_text<Msd><Type>Hello</type></mcd>
NamvalueLen:56
NameValuedata:<jms><dst></dst></jms>
NamevalueLen:56
NameValuedata:<usr>Hi</usr>

我有以下代码,但我不明白如何添加 NameValueLenNAMEVALUEDATA 部分。有人可以检查我编写的代码并进一步指导我吗?

MQMessage msg = new MQMessage();
msg.format = MQC.MQFMT_RF_HEADER_2; // Msg Format
msg.writeString(MQC.MQRFH_STRUC_ID); // StrucId 
msg.writeInt4(MQC.MQRFH_VERSION_2); // Version 
msg.writeInt4(MQC.MQRFH_STRUC_LENGTH_FIXED_2 + folderLength + 4); 
msg.writeInt4(MQC.MQENC_NATIVE); // Encoding 
msg.writeInt4(MQC.MQCCSI_DEFAULT); // CodedCharacterSetId 
msg.writeString(MQC.MQFMT_NONE); // Format (content) 
msg.writeInt4(MQC.MQRFH_NO_FLAGS); // Flags 
msg.writeInt4(1208); // NameValueCCSID = UTF-8 

【问题讨论】:

  • 当 JMS 应用程序读取从非 JMS 应用程序发送的消息时,MQ 会处理填充 RFH2 标头。如果您想要更多控制权,可以使用 IBM MQ Classes for JMS 而不是 IBM MQ Classes for Java。
  • @JoshMc 你能告诉我如何使用它吗?任何可以让我正确理解 MQ 的链接

标签: java ibm-mq


【解决方案1】:

我不知道您使用的是什么工具,但它使问题令人困惑。 MQRFH2 有“文件夹”。第一个文件夹总是“mcd”。第二个文件夹是“jms”。之后的所有文件夹都是可选的。

注意:“usr”文件夹是您放置用户数据的地方。

你为什么不在 MQ 中使用MQRFH2 class

https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q030950_.htm

即以下是你应该如何做的:

MQMessage mqMsg = new MQMessage();
MQRFH2 rfh2 = new MQRFH2();

rfh2.setEncoding(CMQC.MQENC_NATIVE);
rfh2.setCodedCharSetId(CMQC.MQCCSI_INHERIT);
rfh2.setFormat(CMQC.MQFMT_STRING);
rfh2.setNameValueCCSID(1208);
rfh2.setFieldValue("usr", "somefield", "somedata");

try
{
   rfh2.write(mqMsg);
}
catch (IOException e)
{
   System.err.println(e.getLocalizedMessage());
}

注意:在上面的代码中,文件夹“mcd”和“jms”将被自动创建和填充。

您可以在 1 次射击中炸毁所有 3 个文件夹(“mcd”、“jms”和“usr”)。除非您知道自己在做什么,否则我不推荐它。

rfh2.setFolderStrings(new String[]{"<mcd><Msd>jms_text</Msd></mcd>",
                                   "<jms><Dst>queue:///TEST.Q1</Dst><Pri>0</Pri></jms>",
                                   "<usr><somefield>somedata</somefield></usr>"});

【讨论】:

猜你喜欢
  • 2018-03-20
  • 2020-08-07
  • 2021-11-14
  • 2017-02-18
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多