如何使用 JMS 将 header 设置为 java 中的字符串
How to set header to a string in java using JMS
我正在尝试将 RFH2Header 类型设置为消息字符串。但它没有附加到消息中。
请帮忙。提前致谢!!!!
我的做法对吗??如果我检查响应 queue,RFH 属性 将添加到字节消息中。
String message1 = "MQ Message header test";
Message message11 = session.createTextMessage(message1);
MQRFH2 header = new MQRFH2();
ByteArrayOutputStream out = new ByteArrayOutputStream ();
DataOutput dout = new DataOutputStream(out);
header.write(dout);
byte[] outheaders = out.toByteArray();
byte[] bArray = message1.getBytes("UTF-8");
BytesMessage responseMessage = session.createBytesMessage(); // throws JMSException
responseMessage.writeBytes(outheaders);
responseMessage.writeBytes(bArray);
responseMessage.setJMSType("MQRFH2");
responseMessage.setJMSCorrelationID("12345678900000");
responseMessage.setJMSDeliveryMode(2);
responseMessage.setJMSPriority(4);
responseMessage.setJMSReplyTo(queue);
responseMessage.setStringProperty("JMS_IBM_Format", "MQRFH2");
responseMessage.setIntProperty("JMS_IBM_Encoding", MQConstants.MQENC_NATIVE);
responseMessage.setIntProperty("JMS_IBM_Character_Set", 1208);
responseMessage.setIntProperty("JMS_IBM_PutApplType", 11);
producer.send(responseMessage);
响应 queue 我的输出如下所示,请帮忙,如何将 header 设置为字符串
00000 4D 51 20 4D 65 73 73 61--67 65 20 68 65 61 64 65 |MQ Message heade|
00010 72 20 74 65 73 74 52 46--48 20 00 00 00 02 00 00 |r testRFH ......|
00020 00 24 00 00 00 00 00 00--00 00 20 20 20 20 20 20 |.$........ |
00030 20 20 00 00 00 00 00 00--04 B8 | .......� |
不是很清楚这个问题,但无论如何以下内容可能对您有用。
RFH2 是 MQ 特定的,而 JMS 是一个标准。 MQ JMS 应用程序无法将 RFH2 数据显式设置为 JMS 消息 header。 MQ JMS 客户端在内部设置所需的 RFH2 headers 以在发送消息时构建 JMS 消息。应用程序只能使用 setJMSxxxx
设置消息 body 和许多 JMS 属性,使用 setxxxProperty
方法设置用户定义的属性。例如下面的代码片段设置了一个名为 MyStringProperty
.
的字符串类型 属性
responseMessage.setStringProperty("MyStringProperty", "SomeString Data");
RFH2 数据将是一个字节流,具有固定 header 部分和可变数据部分,如下所述:http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q032000_.htm?lang=en。因此,如果您想将 RFH2 数据作为 message body.[=16 的一部分发送,则需要创建 BytesMessage
=]
我正在尝试将 RFH2Header 类型设置为消息字符串。但它没有附加到消息中。 请帮忙。提前致谢!!!! 我的做法对吗??如果我检查响应 queue,RFH 属性 将添加到字节消息中。
String message1 = "MQ Message header test";
Message message11 = session.createTextMessage(message1);
MQRFH2 header = new MQRFH2();
ByteArrayOutputStream out = new ByteArrayOutputStream ();
DataOutput dout = new DataOutputStream(out);
header.write(dout);
byte[] outheaders = out.toByteArray();
byte[] bArray = message1.getBytes("UTF-8");
BytesMessage responseMessage = session.createBytesMessage(); // throws JMSException
responseMessage.writeBytes(outheaders);
responseMessage.writeBytes(bArray);
responseMessage.setJMSType("MQRFH2");
responseMessage.setJMSCorrelationID("12345678900000");
responseMessage.setJMSDeliveryMode(2);
responseMessage.setJMSPriority(4);
responseMessage.setJMSReplyTo(queue);
responseMessage.setStringProperty("JMS_IBM_Format", "MQRFH2");
responseMessage.setIntProperty("JMS_IBM_Encoding", MQConstants.MQENC_NATIVE);
responseMessage.setIntProperty("JMS_IBM_Character_Set", 1208);
responseMessage.setIntProperty("JMS_IBM_PutApplType", 11);
producer.send(responseMessage);
响应 queue 我的输出如下所示,请帮忙,如何将 header 设置为字符串
00000 4D 51 20 4D 65 73 73 61--67 65 20 68 65 61 64 65 |MQ Message heade|
00010 72 20 74 65 73 74 52 46--48 20 00 00 00 02 00 00 |r testRFH ......|
00020 00 24 00 00 00 00 00 00--00 00 20 20 20 20 20 20 |.$........ |
00030 20 20 00 00 00 00 00 00--04 B8 | .......� |
不是很清楚这个问题,但无论如何以下内容可能对您有用。
RFH2 是 MQ 特定的,而 JMS 是一个标准。 MQ JMS 应用程序无法将 RFH2 数据显式设置为 JMS 消息 header。 MQ JMS 客户端在内部设置所需的 RFH2 headers 以在发送消息时构建 JMS 消息。应用程序只能使用 setJMSxxxx
设置消息 body 和许多 JMS 属性,使用 setxxxProperty
方法设置用户定义的属性。例如下面的代码片段设置了一个名为 MyStringProperty
.
responseMessage.setStringProperty("MyStringProperty", "SomeString Data");
RFH2 数据将是一个字节流,具有固定 header 部分和可变数据部分,如下所述:http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q032000_.htm?lang=en。因此,如果您想将 RFH2 数据作为 message body.[=16 的一部分发送,则需要创建 BytesMessage
=]