Javaで大きなMQメッセージを読み込み、MQメッセージの内容を処理してファイルに書き込む作業をしています。Javaで大きなMQオブジェクトを扱う
私が書いているコードはマルチスレッドであり、複数のメッセージを並行して処理することができます。
書き込みアプリケーションは、セグメンテーション+グループ化を使用して大きなMQメッセージをキューに書き込みます(PUT)。
今、以下の手順を読んでいます。
MQGetMessageOptionsに適切な値を設定します。
MQGetMessageOptions getGroupMsgOptions = new MQGetMessageOptions(); getGroupMsgOptions.options = MQC.MQGMO_LOGICAL_ORDER | MQC.MQGMO_SYNCPOINT | MQC.MQGMO_ALL_MSGS_AVAILABLE | MQC.MQGMO_COMPLETE_MSG;
初期化MQQueue - serverFileQueueとMQMessage - reqMessage。
reqMessageとgetGroupMsgOptionsを渡してMQQueueのgetメソッドを呼び出す。
serverFileQueue.get(reqMessage, getGroupMsgOptions);
whileループのMQメッセージフラグをチェックして、グループ内の最後のメッセージの最後のセグメントを識別します。
BufferedOutputStreamを使用してメッセージの内容をファイルに書き込みます。
MQメッセージが大きすぎると私の質問は、コードがjava.lang.OutOfMemoryErrorをを取得する必要がありますか?
ステップ3 serverFileQueue.get(...)
がMQメッセージ全体をメモリにロードするかどうかを理解しようとしていますか?
セグメントのみがロードされるため、心配する必要はありませんjava.lang.OutOfMemoryError?