我发送了一个我正在从文件中读取的JMSBytesMessage。我可以将字节数组写回到一个没有问题的文件。但是如果我将它发送到JMS队列并检索它并尝试将其打印到文件中,则它是不可读的。
Files.readAllBytes(Paths.get(file.getPath()))
Files.write(filename, message.getBytes(), StandardOpenOption.CREATE);
我已经将它编码为Base64,这使得它从队列中检索后变大了两个KB,但是没有把它变成我能读的东西。关于BytesMessages,我不了解什么?
答案 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);