I need to create a message with RFH2 header and inject it in IBM MQ. Please find below how the message is created.
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}''')
However, it seems that header content is not put in the header but before the message. Please find below an example:
Server logs with message sent with MQ Visual Edit
Header
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}
Message
<Document ...>...</Document>
Server logs with message sent with above code
Header
2020-04-21 11:07:59.913 DEBUG 48093 --- [DefaultMessageListenerContainer-2]
c.b.i.c.listeners.AbstractAgiListener : Receive message on MQ with header : {someargs}
Message
RFH ¨ÿÿÿþ ¸ <mcd><Msd>jms_bytes</Msd></mcd> 8<jms><Dst>queue:///myqueue</Dst>
<Pri>0</Pri></jms> <usr><Sender>mysender</Sender></usr><Document ...>...</Document>
Any idea how to solve it please? Thank you.
Update 1
Even with the below code, information are still present before the message
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)