2013-02-12 233 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);