Ich arbeite am Lesen großer MQ-Nachrichten in Java und Verarbeitung + Schreiben der Inhalte von MQ-Nachricht in eine Datei.Umgang mit großen MQ-Objekten in Java
Der Code, den ich schreibe, ist Multi-Threaded und kann mehrere Nachrichten parallel verarbeiten.
Die schreibende Anwendung schreibt (PUT) große MQ-Nachricht mit Segmentierung + Gruppierung in die Warteschlange.
Jetzt, während unten lesen Schritte stattfinden.
Sets entsprechende Werte für MQGetMessageOptions.
MQGetMessageOptions getGroupMsgOptions = new MQGetMessageOptions(); getGroupMsgOptions.options = MQC.MQGMO_LOGICAL_ORDER | MQC.MQGMO_SYNCPOINT | MQC.MQGMO_ALL_MSGS_AVAILABLE | MQC.MQGMO_COMPLETE_MSG;
MQQueue initialisieren - serverFileQueue und MQMessage - reqMessage.
Aufrufen der Methode get für MQQueue durch Übergeben von reqMessage und getGroupMsgOptions.
serverFileQueue.get(reqMessage, getGroupMsgOptions);
Überprüfen des MQ-Nachricht-Flags in einer while-Schleife letztes Segment der letzten Nachricht in der Gruppe zu identifizieren.
Schreiben Sie den Inhalt der Nachricht mit BufferedOutputStream in eine Datei.
Meine Frage ist, ob die MQ-Nachricht zu groß ist, sollte der Code java.lang.OutOfMemoryError bekommen?
Ich versuche zu verstehen, ob Schritt 3 serverFileQueue.get(...)
würde gesamte MQ-Nachricht im Speicher geladen werden?
ODER nur Segmente würden geladen werden, also brauchen Sie sich keine Sorgen zu machen java.lang.OutOfMemoryError?