WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Gemeinsamer Zugriff auf Dateien in demselben Verzeichnis durch mehrere Dateien

WebSphere Message Broker steuert den Zugriff auf Dateien und sorgt dafür, dass immer nur jeweils ein Dateiknoten eine Datei lesen bzw. beschreiben darf.

Wenn ein Nachrichtenfluss den FileInput- oder FileOutput-Knoten verwendet, kann es sein, dass dem Nachrichtenfluss weitere Instanzen (Threads) zugeordnet sind oder aber dass Dateiknoten in anderen Nachrichtenflüssen derselben oder anderer Ausführungsgruppen auf Dateien in demselben Verzeichnis verweisen. WebSphere Message Broker steuert die Art und Weise, wie mehrere Prozesse Lese- und Schreibvorgänge in Dateien ausführen; die Dateien werden während der Verarbeitung in das Verzeichnis mqsitransitin verschoben und während ihrer Verarbeitung gesperrt. Das Verzeichnis mqsitransitin ist ein Unterverzeichnis des Eingabeverzeichnisses, das im FileInput-Knoten angegeben ist.

Wenn Sie den FileInput-Knoten verwenden und angeben, das Unterverzeichnisse eingeschlossen werden sollen, wird je nach Bedarf überall, wo eine Datei verarbeitet werden muss, ein mqsitransitin-Verzeichnis erstellt.

Die Dateien, die gerade vom FileInput-Knoten gelesen bzw. vom FileOutput-Knoten beschrieben werden, werden vom Broker gesperrt. Auf diese Weise wird verhindert, dass andere Ausführungsgruppen die Dateien lesen oder ändern, solange diese verarbeitet werden. Der Broker hebt die Sperre der Datei in folgenden Fällen auf:
Anmerkung: Der FTEInput-Knoten verwendet kein Durchgangsverzeichnis. Jede Ausführungsgruppe verfügt über einen eigenen WebSphere MQ File Transfer Edition-Agenten. Nur die Dateien, die an den Agenten gesendet wurden, für den ein Knoten implementiert ist, werden von dem Knoten verarbeitet. Die Ausführungsgruppe stellt sicher, dass eine Datei nur durch einen Knoten der Ausführungsgruppe verarbeitet wird.

Datei lesen

Wenn der FileInput-Knoten eine Datei liest, verschiebt er sie zunächst in das Verzeichnis mqsitransitin, wo sie während der Verarbeitung gespeichert wird. Ein Präfix (mit der UUID der Ausführungsgruppe) wird dem Dateinamen hinzugefügt, um anzugeben, welche Ausführungsgruppe die Datei gerade verarbeitet. Solange sich die Datei in diesem Verzeichnis befindet, können keine anderen Ausführungsgruppen auf sie zugreifen. Der Broker verwaltet im Verzeichnis mqsitransitin das Unterverzeichnis lock, um sicherzustellen, dass auf die Dateien im Eingabeverzeichnis nur von jeweils einer Ausführungsgruppe zugegriffen werden kann.

Wenn mehrere Nachrichtenflüsse oder Instanzen innerhalb einer Ausführungsgruppe Daten aus demselben Eingabeverzeichnis lesen, wird dem Leseprozess nur eine Instanz eines Nachrichtenflusses zugeordnet. Diese Instanz verarbeitet die einzelnen Datensätze der Datei seriell. Andere Instanzen des Nachrichtenflusses oder andere Nachrichtenflüsse können gleichzeitig andere Dateien verarbeiten, deren Namen dem in der Knoteneigenschaft Dateiname oder Muster angegebenen Muster entsprechen.

Während der Verarbeitung einer Datei wird die Datei durch das Dateisystem gesperrt. Folglich kann die Datei während ihrer Verarbeitung durch die Dateiknoten von anderen Programmen (einschließlich anderen Ausführungsgruppen) weder gelesen, noch beschrieben oder gelöscht werden.

Während ein FileInput-Knoten eine Datei liest, verbleibt die Datei im Verzeichnis mqsitransitin, und zwar so lange, bis sie vollständig verarbeitet wurde (oder bis ein nicht behebbarer Fehler auftritt). Falls die Datei beibehalten werden soll, wird sie in einem Unterverzeichnis des Verzeichnisses mqsitransitin gespeichert.

Die Datei wird nach ihrer Verarbeitung aus dem Verzeichnis mqsitransitin wieder in das Eingabeverzeichnis verschoben. Wird die Ausführungsgruppe jedoch unerwartet beendet, solange sich die Datei im Verzeichnis mqsitransitin befindet, können Sie die Eingabedatei manuell im Eingabeverzeichnis wiederherstellen, indem Sie das UUID-Präfix der Ausführungsgruppe aus dem Dateinamen entfernen und anschließend eine Verschiebung in das Eingabeverzeichnis vornehmen. Die Eingabedatei wird dann vom nächsten FileInput-Knoten verarbeitet, der das Verzeichnis durchsucht.

Wenn Sie einen NFS-Server verwenden und Dateiknoten in verschiedenen Ausführungsgruppen vorhanden sind, die auf dasselbe Verzeichnis im NFS-Server zugreifen, muss auf jeden Fall NFS Version 4 verwendet werden, damit Dateisperren unterstützt werden.

Datei schreiben

Die von einem FileOutput-Knoten erstellten und geschriebenen Dateien werden nach ihrer Fertigstellung in das Ausgabeverzeichnis gestellt. So lange der Datei noch Datensätze hinzugefügt werden, verbleibt sie im Unterverzeichnis mqsitransit.

Jeder Datensatz wird durch eine eigene Nachrichtenflussinstanz geschrieben. Alle Nachrichtenflussinstanzen, die gemäß ihrer Konfiguration Datensätze in eine bestimmte Datei schreiben dürfen, können dieser Datei Datensätze hinzufügen. Da die Instanzen in beliebiger Reihenfolge ausgeführt werden können, können sich die von ihnen geschriebenen Datensätze überschneiden, was bedeutet, dass die Reihenfolge der Datensätze möglicherweise verändert wird. Falls die Reihenfolge der Datensätze in der Ausgabedatei beibehalten werden soll, darf die Datei nur von einer Instanz des FileOutput-Knotens verwendet werden. Um sicherzugehen, dass die Datei nur von einer Instanz des FileOutput-Knotens verwendet wird, ist der Nachrichtenfluss, in dem der Knoten enthalten ist, so zu konfigurieren, dass er den Pool zusätzlicher Instanzen mit null Instanzen verwendet. Außerdem muss sichergestellt werden, dass keine anderen Nachrichtenflüsse in dieselbe Datei schreiben.

Während der Verarbeitung einer Datei wird die Datei durch das Dateisystem gesperrt. Folglich kann die Datei während ihrer Verarbeitung durch die Dateiknoten von anderen Programmen (einschließlich anderen Ausführungsgruppen) weder gelesen, noch beschrieben oder gelöscht werden. Diese Sperre bleibt noch eine kurze Zeit erhalten, nachdem ein FileOutput-Knoten in eine Datei geschrieben hat, ohne sie fertig zu stellen, die Datei sich also noch im Durchgangsverzeichnis befindet. Wenn Nachrichtenflüsse derselben Ausführungsgruppe dieselbe Ausgabedatei verwenden und schnell genug ausgeführt werden, hebt der Broker die Sperre nicht vor Fertigstellung der Datei auf. Liegen jedoch zwischen den Nachrichtenflüssen längere Intervalle, hebt der Broker die Sperre auf. Andere Prozesse oder Ausführungsgruppen können die Datei dann mit einer Sperre belegen. Um dies zu verhindern, dürfen die Ausgabeverzeichnisse nicht von Ausführungsgruppen gemeinsam genutzt werden.

Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:20:18


KonzeptthemaKonzeptthema | Version 8.0.0.5 | ac55400_