2

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());

                }

       }

メッセージが流れ始めたら、テキストファイルを読み取って、これらすべてのメッセージを最初の try ブロック内にロードする必要があります。sender.send(mqMessage)

私は完全なファイルの内容を読んでいます。メッセージを分割して文字列に保存した後、その文字列を型にキャストし JMSBytesMessageて MQ に配置するにはどうすればよいですか。

JMSBytesMessageここで完全なシナリオについて言及したのは、文字列に変換してからもう一度文字列に変換しJMSBytesMessageたいが、両方の型キャストを実行しているときに実際のコンテンツを変更したくない ことを伝えたかったからです。

ありがとう

4

1 に答える 1

3

テキストへのバイトメッセージ

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);
于 2013-02-17T19:28:22.173 に答える