编码JMS TextMessage

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编码JMS TextMessage相关的知识,希望对你有一定的参考价值。

我正在接收来自JMS MQ队列的消息,这些消息应该是utf-8编码的。然而,在使用msgText = ((TextMessage)msg).getText();阅读时,我得到了非标准字符存在的问号。在使用bytemessage时似乎可以指定编码,但我无法在读出TextMessage时找到指定编码的方法。有没有办法解决这个问题,还是应该按bytemessages

答案

我们尝试将Dfile.encoding="UTF-8"添加到Websphere的jvm中,我们补充道

source = new StreamSource(new ByteArrayInputStream(
     ((TextMessage) msg).getText().getBytes("UTF-8")));

在我们的MessageListener。这对我们有用,所以我们取出了Dfile.encoding,它仍然适用于我们。

由于Websphere的首选最低配置,我们决定以这种方式离开,同时考虑到我们可以通过文件或数据库中的设置更轻松地切换UTF-8字符串。

另一答案

如果文本未正确解码,那么客户端可能不会使用utf-8编解码器发送消息;这应该工作:

byte[] by = ((TextMessage) msg).getText().getBytes("ISO-8859-1");
String text = new String(by,"UTF-8");

以上是关于编码JMS TextMessage的主要内容,如果未能解决你的问题,请参考以下文章

消息中间件_ActiveMQ消息类型

AMQ之JMS Mesage structure(JMS消息结构)

使用 Jms 发送对象 - HornetQ(性能问题)[关闭]

ActiveMQ / PHP Stomp 使用 TextMessage 而不是 BytesMessage

wildfly 实践5 ---分布式服务中的JMS服务访问

markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章