由于以下原因无法提取 body:javax.jms.JMSException:无法从字节构建 body(无法将已发送的 Zip 文件提取到 ActiveMQ)

Failed to extract body due to: javax.jms.JMSException: Failed to build body from byte(Failed to extract sent Zip file to ActiveMQ)

我正在尝试使用我在 C# .NET 上编写的客户端应用程序向 ActiveMQ 服务器发送消息。我有 XML 条消息,我已将其转换为 Zip 流并尝试发送。

public IMessage SendMessage(string mqUri, string brokerUri, MemoryStream message, string username, string password)
    {
        Uri connecturi = new Uri(mqUri);

        IConnectionFactory factory = new NMSConnectionFactory(connecturi);

        using (IConnection connection = factory.CreateConnection(username, password))
        using (ISession session = connection.CreateSession())
        {
            IDestination destination = SessionUtil.GetDestination(session, brokerUri);

            using (IMessageProducer producer = session.CreateProducer(destination))
            {
                connection.Start();
                IBytesMessage request = session.CreateBytesMessage(message.ToArray());
                producer.Send(request);

                return request;
            }
        }
    }

在服务器端解析数据时出现如下异常:

JMS 消息侦听器执行失败。原因:[org.apache.camel.RuntimeCamelException - 无法提取 body,原因是:javax.jms.JMSException:无法从字节构建 body。原因:java.io.StreamCorruptedException:无效流 header:00010000。消息:ActiveMQObjectMessage。

当我调试代码并设置断点时,Bodylength 和内容出现异常 'request.Content' 抛出了 'Apache.NMS.MessageNotReadableException' 类型的异常

在ActiveMQ 服务器上发送消息是否有任何特殊的zip 转换?请帮忙。谢谢

问题是将 zip 转换为 memorystream,后来我发现它需要将 .xml 文件转换为 zipstream 而不是压缩文件。

public static MemoryStream CreateZipStream()
    {
        using (ZipFile zip = new ZipFile())
        {
            MemoryStream outputStream = new MemoryStream();
            outputStream.Seek(0, SeekOrigin.Begin);
            string filePath =
                @"C:\YourXml.xml";
            zip.AddFile(filePath);
            zip.Save(outputStream);
            return outputStream;
        }
    }