JMS破坏字节消息

时间:2017-03-07 21:12:59

标签: jms ibm-mq

我发送了一个我正在从文件中读取的JMSBytesMessage。我可以将字节数组写回到一个没有问题的文件。但是如果我将它发送到JMS队列并检索它并尝试将其打印到文件中,则它是不可读的。

Files.readAllBytes(Paths.get(file.getPath()))

Files.write(filename, message.getBytes(), StandardOpenOption.CREATE);

我已经将它编码为Base64,这使得它从队列中检索后变大了两个KB,但是没有把它变成我能读的东西。关于BytesMessages,我不了解什么?

1 个答案:

答案 0 :(得分:3)

你的代码是......奇怪或不完整的 如何从JMS消息中获取字节? message是从队列中获取的JMS BytesMessage吗?课程getBytes()中没有BytesMessage方法 要从BytesMessage获取字节,请执行以下操作:

BytesMessage msg = ... // Obtain the message from the Q
byte[] data = new byte[(int) msg.getBodyLength()];
msg.readBytes(data);

然后将字节写入文件

Files.write(filename, data, StandardOpenOption.CREATE);