将 XML 发送到 JMS 时我应该使用 TextMessage 还是 BytesMessage

问题描述 投票:0回答:1

我在网上发现了一些非常矛盾的信息,我认为每个不同的 JMS 提供商也可能会改变答案。

我试图了解将 XML 发送到 JMS 系统(例如 ActiveMQ)时是否应该使用

  • BytesMessage
    :我可以保证 XML 被正确序列化,并且前导码将与实际编码匹配。此外,我可以确定客户将能够正确获得原始表示。

  • TextMessage
    :许多队列实现中都有 API 可以轻松发送 XML。我还了解到消息中附加了“编码”信息。但我冒着用一种格式对消息进行编码(并编写其序言)并以另一种格式接收它的风险。

有人有明确的答案吗,或者至少有一些你选择其中一个而不是另一个的原因?

java xml serialization character-encoding jms
1个回答
5
投票

我同意jos'对你的问题的评论。首先,您应该选择最能表达内容“语义”的消息类型。阅读 TextMessage

 Javadoc,我会这样做:

此消息类型可用于传输基于文本的消息,包括具有 XML 内容的消息。

因此,如果您确实在短信编码方面遇到问题,那么客户端/服务器端可能存在一些配置错误。但这不应该成为滥用并非主要用于文本传输的不同消息类型的动机,例如

BytesMessage

注意:即使使用

BytesMessage

,您也可能会得到错误的编码。想象一下:


// Send that data through JMS byte[] data1 = "source text".getBytes("ISO-8859-1"); // Receive the byte stream on the other side. Ooops String data2 = new String(data1, "UTF-8");

© www.soinside.com 2019 - 2024. All rights reserved.