JMSBytesMessage为字符串,String为JMSBytesMessage类型转换

时间:2013-02-12 10:20:21

标签: java java-ee

我需要向MQ写一条消息,如果由于任何原因失败,我必须将该消息写入文本文件。我必须继续将消息添加到此文本文件,直到消息再次开始流向MQ。消息开始流动后,我必须检查文本文件并从中加载所有待处理的消息,并从文本文件中删除它们。

try{
    sender.send(mqMessage); where mqMessage is of JMSBytesMessage
}

现在如果发送消息失败,我必须将其写入文本文件

catch(JMSException mqe)
       {
           mqe.printStackTrace();
           try{


                String msgString= mqMessage.toString();
                FileWriter fstream = new FileWriter(filePath);
                BufferedWriter out = new BufferedWriter(fstream);
                out.append(msgString);
                out.close();
              }
           catch (Exception e){//Catch exception if any
                  System.err.println("Error: " + e.getMessage());

                }

       }

一旦消息开始流动,我必须阅读文本文件并加载所有这些消息 在sender.send(mqMessage)

之后的第一个试块中

我正在阅读完整的文件内容,在分割消息并将它们存储到字符串后,如何将该字符串转换为JMSBytesMessage类型以便将它们放在MQ上。

我已经在这里提到了完整的场景,因为我想告诉我虽然我想将JMSBytesMessage转换为字符串然后再将String转换为JMSBytesMessage但我不想在同时执行这两项操作时更改实际内容类型铸件。

由于

1 个答案:

答案 0 :(得分:2)

bytesmessage to text

int length = new Long(message.getBodyLength()).intValue();
byte[] b = new byte[length];
message.readBytes(b, length);
String text = new String(b, "UTF-8");

text to bytes消息

byte[] b = mytext.getBytes("UTF-8");
BytesMessage message = session.createBytesMessage();
message.writeBytes(bArray);