2013-02-12 231 views
1

我有一个要求向MQ写入消息的要求,如果因任何原因失败,我必须将该消息写入文本文件。我必须继续将消息添加到此文本文件,直到消息再次开始流向MQ。一旦消息开始流动,我必须检查文本文件并加载所有待处理的消息,并从文本文件中删除它们。JMSBytesMessage将字符串和字符串转换为JMSBytesMessage类型转换

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转换为字符串,然后再次字符串JMSBytesMessage但我不想同时做两种类型的铸件改变实际的内容。

由于

回答

1

bytesmessage到文本

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

文本到字节消息

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