【发布时间】:2020-08-04 00:48:15
【问题描述】:
我需要创建一个带有 RFH2 标头的消息并将其注入 IBM MQ。请在下面找到消息是如何创建的。
def message = new MQMessage()
def rfh2 = new MQRFH2()
rfh2.setEncoding(CMQC.MQENC_NATIVE)
rfh2.setCodedCharSetId(CMQC.MQCCSI_INHERIT)
rfh2.setFormat(" ")
rfh2.setNameValueCCSID(1208)
rfh2.setFieldValue('mcd', 'Msd', 'jms_byte')
rfh2.setFieldValue('jms', 'Dst', 'queue:///myqueue')
rfh2.setFieldValue('jms', 'Pri', 0)
rfh2.setFieldValue('usr', 'Sender', 'mysender')
rfh2.write(message)
message.writeString('''${msgText}''')
但是,标题内容似乎不是放在标题中而是放在消息之前。请在下面找到一个示例:
带有使用 MQ Visual Edit 发送的消息的服务器日志
标题
2020-04-21 11:07:59.913 DEBUG 48093 --- [DefaultMessageListenerContainer-2]
c.b.i.c.listeners.AbstractAgiListener : Receive message on MQ with header : {someargs,
jms_destination=queue:///myqueue, someargs, Sender=mysender, someargs, jms_type=mcd://jms_byte,
someargs}
留言
<Document ...>...</Document>
带有上述代码发送消息的服务器日志
标题
2020-04-21 11:07:59.913 DEBUG 48093 --- [DefaultMessageListenerContainer-2]
c.b.i.c.listeners.AbstractAgiListener : Receive message on MQ with header : {someargs}
留言
RFH ¨ÿÿÿþ ¸ <mcd><Msd>jms_bytes</Msd></mcd> 8<jms><Dst>queue:///myqueue</Dst>
<Pri>0</Pri></jms> <usr><Sender>mysender</Sender></usr><Document ...>...</Document>
你知道怎么解决吗?谢谢。
更新 1
即使使用下面的代码,信息仍然存在于消息之前
def message = new MQMessage()
def rfh2 = new MQRFH2()
rfh2.setEncoding(CMQC.MQENC_NATIVE)
rfh2.setCodedCharSetId(CMQC.MQCCSI_INHERIT)
rfh2.setFormat(CMQC.MQFMT_NONE)
rfh2.setNameValueCCSID(1208)
rfh2.setFieldValue('mcd', 'Msd', 'jms_byte')
rfh2.setFieldValue('usr', 'Sender', 'mysender')
rfh2.write(message)
【问题讨论】:
-
这能回答你的问题吗? How to send message with RFH2 format?
-
这个答案解释了如何使用 JMeter 谢谢。但不是如何解决我的标题问题。
-
所以将
rfh2.setFormat(" ")更改为rfh2.setFormat("RHF2")?因为负责申请的人告诉我“你需要在格式字段中放8个空格”。 -
实际上当你调用
rfh2.write时这是自动的。您应该像这样设置格式,它应该与空白rfh2.setFormat(CMQC.MQFMT_NONE)相同。同样只为usr属性调用rfh2.setFieldValue,其他三个在调用rfh2.write时设置。 -
@JoshMc 谢谢。我根据您的评论用新代码更新了我的问题。
标签: jms ibm-mq rfh2 mq-visual-edit