public static void MQMessageToStream(IBM.WMQ.MQMessage msg, Stream stream) { byte[] buffer = new byte[100 * 1024]; int bytesToRead = msg.DataLength > buffer.Length ? buffer.Length : msg.DataLength; buffer = msg.ReadBytes(bytesToRead); stream.Write(buffer, 0, bytesToRead); while (msg.DataLength > 0) { bytesToRead = msg.DataLength > buffer.Length ? buffer.Length : msg.DataLength; buffer = msg.ReadBytes(bytesToRead); stream.Write(buffer, 0, bytesToRead); } stream.Seek(0, SeekOrigin.Begin); }
// TODO: test this public static void PopulateErrorQueueMessage(IBytesMessage toSend, IBM.XMS.IBytesMessage failed, XmsDestination xmsDestination) { var body = new byte[failed.BodyLength]; if (body.Length > 0) { failed.ReadBytes(body, body.Length); toSend.WriteBytes(body); } toSend.JMSCorrelationID = failed.JMSCorrelationID; toSend.JMSDeliveryMode = failed.JMSDeliveryMode; toSend.CopyStringProperty(HEADER_RETURNADDRESS, failed); toSend.CopyStringProperty(HEADER_IDFORCORRELATION, failed); toSend.CopyStringProperty(HEADER_WINDOWSIDENTITYNAME, failed); toSend.CopyStringProperty(HEADER_MESSAGEINTENT, failed); var keys = failed.GetStringProperty(HEADER_NBSKEYS); var unwrapedKeys = UnwrapKeys(keys); foreach (var unwrapedKey in unwrapedKeys) { toSend.CopyStringProperty(unwrapedKey, failed); } toSend.CopyStringProperty(HEADER_NBSKEYS, failed); // error queue specific toSend.SetStringProperty(HEADER_FAILEDQUEUE, xmsDestination.ToString()); var id = failed.GetStringProperty(HEADER_ORIGINALID); toSend.SetStringProperty(HEADER_ORIGINALID, id); }