MQMessage definitioN:
MQMessage strXMLMessage = new MQMessage();
strXMLMessage.CharacterSet = 1208;
strXMLMessage.Format = "MQHRF2";
Class:
public static MQMessage WriteHeader(MQMessage mqMsg, string fileName, MQQueue queue)
{
var encoding = new System.Text.UTF8Encoding();
// OLD HARD CODED STRINGS
//var mcdHeader = @"jms_text";
//var jmsHeader = @"queue:///APPS/OOT/REQUEST12970426443072";
//var usrHeader = @"1122TestReceiver";
// NEW DYNAMIC CONFIG LOADED STRINGS
var mcdHeader = @"RFH:DATA";
var jmsHeader = @"queue://"+queue.Name.ToString().TrimEnd()+""+ (((long)System.DateTime.Now.Ticks) - 621355968000000000)/10000 +"2";
var usrHeader = @""+fileName+"";
while (encoding.GetByteCount(jmsHeader) % 4 != 0)
{
jmsHeader = jmsHeader + " "; // add space here for tracking total length (don't actually do anything with this one)
}
while (encoding.GetByteCount(mcdHeader) % 4 != 0)
{
mcdHeader = mcdHeader + " "; // add space here for tracking total length (don't actually do anything with this one)
}
// add space here for tracking total length (don't actually do anything with this one)
while (encoding.GetByteCount(usrHeader) % 4 != 0)
{
usrHeader = usrHeader + " ";
}
var rfhHeader = mcdHeader + jmsHeader + usrHeader;
// last item in name value section gets the extra spaces
var rfhHeaderLen = encoding.GetByteCount(rfhHeader);
Int32 iStrucLength = IBM.XMS.MQC.MQRFH_STRUC_LENGTH_FIXED_2 + rfhHeaderLen + 12 ; // 3 header lengths * 4 bytes
// RFH HEADER
mqMsg.Format = IBM.XMS.MQC.MQFMT_RF_HEADER_2; // Msg Format //comentar si tal
mqMsg.WriteBytes(IBM.XMS.MQC.MQRFH_STRUC_ID); // Structure identifier
mqMsg.WriteInt4(IBM.XMS.MQC.MQRFH_VERSION_2); // Structure version number
mqMsg.WriteInt4(iStrucLength); // Total length of MQRFH2 including NameValueData
mqMsg.WriteInt4(IBM.XMS.MQC.MQENC_NATIVE); // Numeric encoding of data that follows NameValueData
mqMsg.WriteInt4(1208); // Character set identifier of data that follows NameValueData
mqMsg.WriteBytes(IBM.XMS.MQC.MQFMT_NONE); // Format name of data that follows NameValueData
mqMsg.WriteInt4(IBM.XMS.MQC.MQRFH_NO_FLAGS); // Flags //descomentar si cual
mqMsg.WriteInt4(1208); // Character set identifier of NameValueData, 1208 = UTF-8
// Optional NameValueData folders and their content must occur in the sequence (length, data)
mqMsg.WriteInt4(encoding.GetByteCount(mcdHeader));
mqMsg.WriteBytes(mcdHeader);
mqMsg.WriteInt4(encoding.GetByteCount(jmsHeader));
mqMsg.WriteBytes(jmsHeader);
mqMsg.WriteInt4(encoding.GetByteCount(usrHeader));
mqMsg.WriteBytes(usrHeader);
return mqMsg;
}