我需要向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
但我不想在同时执行这两项操作时更改实际内容类型铸件。
由于
答案 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);