-
Technischer Anwendungsbereich
-
Die vorliegende Erfindung bezieht sich auf eine Vorrichtung zum Verarbeiten einer Stapelarbeitseinheit.
-
Hintergrundinformation
-
In nachrichtengesteuerten transaktionalen Anwendungen führt ein Server für eine Nachrichttransaktion eine erzwungene Schreiboperation auf Festplatte durch, wenn eine Festschreibeentscheidung berechnet wurde.
-
Erzwungene Schreiboperationen auf Platte sind aufwändig und führen zu Verzögerungen.
-
Bei nachrichtengesteuerten Transaktionen kann die Effizienz durch eine Stapelverarbeitung erhöht werden, wodurch eine Transaktion mit einer bestimmten Anzahl an Nachrichten verknüpft wird. Somit wird anstatt einer erzwungenen Schreiboperation auf Festplatte für jede Nachricht eine erzwungene Schreiboperation auf Festplatte für eine Reihe von Festschreibentscheidungen durchgeführt, die mit der bestimmten Anzahl von Nachrichten verknüpft sind.
-
Wenn jedoch die Stapelverarbeitung zu Problemen führt, z. B. wenn ein Fehler auftritt, wodurch die Nachricht nicht erfolgreich verarbeitet wird, so wird die Arbeit, die mit allen Nachrichten in der (Stapelverarbeitungs-)Transaktion verknüpft ist, zurückgesetzt bzw. zurückgezogen.
-
Daher besteht im Stand der Technik das Erfordernis, die oben beschriebenen Probleme zu lösen.
-
Offenlegung der Erfindung
-
Gemäß einem ersten Aspekt wird eine Vorrichtung zum Verarbeiten einer Stapelarbeitseinheit bereitgestellt, die mit einer Mehrzahl von Nachrichten verknüpft ist, zur Verwendung mit einem Datenspeicher zum Speichern: eines Zurückziehungszählers (Backout Count), der mit einer Reihe von Instanzen verknüpft ist, die in Verbindung mit der zurückgesetzten Stapelarbeitseinheit arbeiten, die eine Zurückziehung erfährt; eines Zurückziehungsgrenzwerts (Backout Threshold), der mit dem Zurückziehungszähler verknüpft ist; und eines Festschreibezählers (Commit Count), der mit dem Festschreiben der Stapelarbeitseinheit als Reaktion auf erfolgreiche Festschreibeoperationen für eine bestimmte Anzahl der Mehrzahl von Nachrichten verknüpft ist, wobei die Vorrichtung aufweist: ein Prüfprogramm, um zu prüfen, ob der Zurückziehungszähler größer Null und kleiner als der Zurückziehungsgrenzwert ist; und eine Überschreibungskomponente, die darauf reagiert, dass der Zurückziehungszähler größer Null und kleiner als der Zurückziehungsgrenzwert ist, um den Festschreibezähler zu überschreiben und die Stapelarbeitseinheit für eine Teilmenge der mehreren Nachrichten festzuschreiben.
-
Gemäß einem zweiten Aspekt wird ein Verfahren zum Verarbeiten einer Stapelarbeitseinheit bereitgestellt, die mit mehreren Nachrichten verknüpft ist, zur Verwendung mit einem Datenspeicher zum Speichern: eines Zurückziehungszählers, der mit einer Reihe von Instanzen verknüpft ist, die in Verbindung mit der zurückgesetzten Stapelarbeitseinheit arbeiten, die eine Zurückziehung erfährt; eines Zurückziehungsgrenzwerts, der mit dem Zurückziehungszähler verknüpft ist; und eines Festschreibzählers, der mit dem Festschreiben der Stapelarbeitseinheit als Reaktion auf erfolgreiche Festschreibeoperationen für eine bestimmte Anzahl der mehreren Nachrichten verknüpft ist, wobei das Verfahren die Schritte aufweist: Prüfen, ob der Zurückziehungszähler größer Null und kleiner als der Zurückziehungsgrenzwert ist; und in Reaktion darauf, dass der Zurückziehungszähler größer Null und kleiner als der Zurückziehungsgrenzwert ist, wird der Festschreibezähler überschrieben und die Stapelarbeitseinheit wird für eine Teilmenge der mehreren Nachrichten festgeschrieben.
-
Unter einem dritten Aspekt betrachtet stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Verarbeiten einer Stapelarbeitseinheit, die mit mehreren Nachrichten verknüpft ist, zur Verwendung mit einem Datenspeicher bereit, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einem Verarbeitungsschaltkreis lesbar ist und Anweisungen zum Ausführen eines Verfahrens durch den Verarbeitungsschaltkreis zum Ausführen der Schritte der Erfindung speichert.
-
Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein auf einem computerlesbaren Medium gespeichertes und in den internen Hauptspeicher eines digitalen Computer ladbares Computerprogramm bereit, das Softwarecodeabschnitte zum Ausführen der Schritte der Erfindung enthält, wenn das Programm auf einem Computer ausgeführt wird.
-
Kurzbeschreibung der Zeichnungen
-
Die vorliegende Erfindung nun wird ausführlicher in rein beispielhafter Weise mit Bezugnahme auf die bevorzugten Ausführungsformen beschrieben, wie in den folgenden Abbildungen dargestellt:
-
1 ist ein Blockdiagramm eines Systems, in dem die bevorzugte Ausführungsform implementiert werden kann;
-
2 ist ein Blockdiagramm einer Vorrichtung der bevorzugten Ausführungsform; und
-
3 ist ein Ablaufdiagramm, das die operativen Schritte in einem Prozess gemäß der bevorzugten Ausführungsform darstellt.
-
Detaillierte Beschreibung der bevorzugten Ausführungsform
-
Bevor die bevorzugte Ausführungsform detailliert beschrieben wird, wird eine unterstützende Einführung zu Message Queing (Nachrichtenwarteschlangen), Nachrichten-Broker (Message Broker) und dem Nachrichtenfluss (Message Flow) angeführt.
-
Die Fähigkeit neue und bestehende Datenverarbeitungstechnologien schnell zu übernehmen, zu integrieren und zu erweitern, ist für viele Unternehmen erfolgsentscheidend geworden. Heterogenität und die Veränderung in Datenverarbeitungsnetzwerken sind heute Standard und erfordern Kommunikationslösungen, mit denen die Interoperabilität zwischen verschiedenen Systemen verwirklicht werden kann. Die Nachrichtenübertragung von Anwendung zu Anwendung über intelligente Middleware-Produkte bietet hier eine Lösung für dieses Problem.
-
So ist zum Beispiel die IBM® WebSphere® MQSeries® (IBM, WebSphere und MQSeries sind Markenzeichen der International Business Machines Corporation, die in vielen Gerichtsbarkeiten weltweit registriert sind.) eine Messaging- und Queuing-Produktfamilie, die bekannt ist für die Unterstützung des Zusammenwirkens von Anwendungsprogrammen, die auf unterschiedlichen Systemen in einer verteilten heterogenen Umgebung ausgeführt werden.
-
Einige Messaging-Produkte bieten Unterstützung für transaktionales Messaging, die Synchronisierung von Nachrichten mit logischen Arbeitseinheiten gemäß einem Messaging-Protokoll, das eine sichergestellte einmalige Zustellung selbst im Falle eines System- oder Datenübertragungsfehlers unterstützt. Einige Produkte ermöglichen die sichergestellte Zustellung, indem eine Nachricht aus einem Sendersystem erst dann endgültig gelöscht wird, wenn sie auf einem Empfängersystem als sicher gespeichert bestätigt wurde, sowie durch die Verwendung ausgefeilter Recovery-Einrichtungen. Bevor die Übertragung der Nachricht bei Bestätigung der erfolgreichen Speicherung festgeschrieben wird, werden sowohl das Löschen der Nachricht aus dem Speicher im Sendersystem und das Einfügen in den Speicher im Empfängersystem in einem „vorläufigen Zustand” gehalten und können im Falle eines Fehlers automatisch zurückgesetzt bzw. zurückgezogen werden.
-
Die beispielsweise von den IBM-WebSphere-MQSeries-Produkten bereitgestellte Message Queuing-Unterstützung der Kommunikation zwischen Programmen ermöglicht allen Anwendungsprogrammen, Nachrichten an die Eingabewarteschlange eines anderen Zielanwendungsprogramms zu senden, und jede Zielanwendung kann diese Nachrichten asynchron aus der Eingabewarteschlange zur Verarbeitung abrufen. Die ermöglicht die gesicherte Zustellung von Nachrichten zwischen Anwendungsprogrammen, die über ein heterogenes Computernetzwerk verteilt sein können, ohne dass eine dedizierte logische End-to-End-Verbindung zwischen den Anwendungsprogrammen erforderlich ist. Es kann sogar eine hohe Komplexität in der Übersicht der möglichen Verbindungen zwischen den Anwendungsprogrammen vorliegen.
-
Diese Komplexität kann stark vereinfacht werden, indem in die Netzwerkarchitektur ein Kommunikationshub integriert wird, mit dem die anderen Systeme verbunden sind, anstatt direkte Verbindungen zwischen allen Systemen zu unterhalten. Message Brokering-Einrichtungen können dann am Kommunikationshub bereitgestellt werden, um die intelligente Weiterleitung von Nachrichten und die Integration von Anwendungen zu ermöglichen. Zu den Message Brokering-Funktionen gehören in der Regel die Fähigkeit, Nachrichten auf intelligente Weise gemäß den Geschäftsregeln und der Kenntnis der Informationsanforderungen der verschiedenen Anwendungsprogramme weiterzuleiten, wobei in den Nachrichten-Headern enthaltene Nachricht-”Themen”-Informationen verwendet werden, und die Fähigkeit, Nachrichtenformate mithilfe der Kenntnis der Nachrichtenformatanforderungen der Zielanwendungen oder -systeme umzuwandeln, um die Unterschiede zwischen den Systemen und Anwendungen aufeinander abzustimmen.
-
Einige Brokering-Einrichtungen (wie die, die beispielsweise vom IBM WebSphere Message Broker bereitgestellt werden) stellen intelligente Weiterleitungs- und Umwandlungsdienste für Nachrichten bereit, die mithilfe von Messaging-Produkten zwischen Anwendungsprogrammen ausgetauscht werden.
-
Die Unterstützung für die Verwaltung und die Entwicklung von Message Brokering-Anwendungen kann in einer Nachrichten-Broker-Architektur implementiert werden, um Funktionen wie das Veröffentlichen/Abonnieren (Publish/Subscribe) der Nachrichtenzustellung, die Nachrichtenumwandlung, die Datenbankintegration, Message Warehousing und das Weiterleiten von Nachrichten bereitzustellen.
-
Es folgt nun eine detailliertere Beschreibung des Stands der Technik mit Bezugnahme auf 1, in der ein System (100) dargestellt ist, das eine Umgebung (120) mit einer zugrundeliegenden Messaging-Unterstützung (mit einem Warteschlangenmanager (130), einer Eingabewarteschlange (135); einer Ausgabewarteschlange (140); einer Fehlerwarteschlange (145)) und einem Computerprogramm (125) z. B. einem Datenbankmanager (125) mit Datenbanktabellen (127) eines Datenverarbeitungssystems aufweist.
-
Das System (100) weist auch einen Nachrichten-Broker (105) auf, der eine Ausführungsgruppe (110) hostet, die wiederum einen Nachrichtenfluss (115) hostet.
-
Ein Nachrichtenfluss ist eine visuelle Darstellung einer Folge von Operationen, die von der Verarbeitungslogik eines Nachrichten-Brokers als gerichteter Graph (ein Nachrichtenflussdiagramm) zwischen einer Eingabe und einem Ziel (zum Beispiel einer Eingabewarteschlange und einer Zielwarteschlange) ausgeführt wird. Das Nachrichtenflussdiagramm besteht aus Nachrichtenverarbeitungsknoten, die Darstellungen der Verarbeitungskomponenten sind, und Nachrichtenflusskonnektoren zwischen den Knoten.
-
In dem Beispiel stellt der Nachrichtenfluss (115) die Verarbeitungslogik der Eingabewarteschlange (135); der Ausgabewarteschlange (140); der Fehlerwarteschlange (145) und des Datenbankmanagers (125) dar.
-
In einem ersten Beispiel des Stands der Technik erhält die Verarbeitungslogik in der Regel eine Nachricht von der Eingabewarteschlange (135) (dadurch wird eine Transaktion gestartet); aktualisiert eine Datenbanktabelle (127); und fügt eine Nachricht in die Ausgabewarteschlange (140) ein – dieser Vorgang wird in der Regel in der Transaktion ausgeführt und die Arbeit wird festgeschrieben, bevor die nächste Nachricht aus der Eingabewarteschlange (135) abgerufen wird. Wenn ein Fehler auftritt, wird die Arbeit zurückgesetzt bzw. zurückgezogen und die Nachricht in die Eingabewarteschlange (135) „zurückgeschrieben” – in diesem Fall wird ein Zurückziehungszähler um 1 erhöht.
-
In der Regel wird für Warteschlangen auch ein Zurückziehungsgrenzwert definiert, der angibt, wie oft eine Nachricht zurückgesetzt bzw. zurückgezogen werden darf, bevor sie in die Fehlerwarteschlange (145) eingefügt wird. Anders ausgedrückt, wenn der Zurückziehungszähler größer ist als der Zurückziehungsgrenzwert, wird die Nachricht in die Fehlerwarteschlange (145) eingefügt.
-
Das Problem mit dem oben beschriebenen ersten Beispiel des Stands der Technik ist die Leistung: Das Festschreiben der Arbeit führt dazu, dass ein zugehöriger Transaktionskoordinator und die Ressourceneigentümer – in diesem Beispiel sind die Ressourceneigentümer der Warteschlangenmanager (130) und der Datenbankmanager (125) – Schreibvorgänge in ein Log (Protokoll) erzwingen, was eine Verzögerung verursacht.
-
Eine Lösung für dieses Problem findet sich im zweiten Beispiel des Stands der Technik. Wie bei den Hintergrundinformationen beschrieben, ist es möglich, die Effizienz durch Stapelverarbeitung zu erhöhen, sodass eine einzelne Transaktion mit einer bestimmten Anzahl an Nachrichten verknüpft ist. In diesem Beispiel wird nicht die Arbeit für jede Nachricht einzeln festgeschrieben, sondern die Transaktion wird nach den Festschreibeoperationen einer bestimmten Anzahl an Nachrichten festgeschrieben.
-
In einer Implementierung des zweiten Beispiels des Stands der Technik wird ein Nachrichtenflussattribut namens Festschreibezähler (commit count) verwendet.
-
In der Implementierung wird ein Nachrichtenzähler (Message Count) vor der Verarbeitung anfangs auf Null gesetzt.
-
Als Nächstes ruft die Verarbeitungslogik eine Nachricht aus der Eingabewarteschlange (135) ab (damit wird eine Transaktion gestartet).
-
Der Nachrichtenzähler wird um 1 erhöht.
-
Eine Prüfung wird durchgeführt, um zu bestimmen, ob der Zurückziehungszähler größer ist als ein Zurückziehungsgrenzwert – ist dies der Fall, wird die Nachricht in die Fehlerwarteschlange (145) eingefügt.
-
Wenn der Zurückziehungszähler nicht größer ist als der Zurückziehungsgrenzwert, wird die Datenbanktabelle (127) aktualisiert und die Nachricht in die Ausgabewarteschlange (140) eingefügt.
-
Eine weitere Prüfung wird durchgeführt, um zu bestimmen, ob der Nachrichtenzähler größer oder gleich dem Festschreibezähler ist.
-
Wenn der Nachrichtenzähler nicht größer oder gleich dem Festschreibezähler ist, ruft die Verarbeitungslogik eine weitere Nachricht aus der Eingabewarteschlange (135) ab und die obigen Schritte werden wiederholt.
-
Wenn der Nachrichtenzähler größer oder gleich dem Festschreibezähler ist, wird die Transaktion für jede Nachricht festgeschrieben (ein Logschreibvorgang wird für die Transaktion erzwungen), und der Nachrichtenzähler wird auf Null gesetzt.
-
Mit dem zweiten Beispiel des Stands der Technik sind verschiedene Probleme verbunden.
-
Als Erstes, obwohl der Festschreibezähler gemäß der Implementierung die Verarbeitung erheblich beschleunigt, weist er den Nachteil auf, dass wenn ein Fehler vorliegt, der zum Zurücksetzen einer Transaktion führt, der gesamte Nachrichtenstapel betroffen ist. Wenn beispielsweise der Festschreibezähler auf „300” festgelegt ist und die 200. Nachricht eine Ausnahme verursacht, werden alle 200 Nachrichten im aktuellen Stapel zurückgesetzt bzw. zurückgezogen und später in die Fehlerwarteschlange eingefügt.
-
Zweitens können Datenbankmanager bei hoher Belastung eine „Eskalation sperren”, was dazu führen kann, dass Fehler bei Festschreibungen auftreten, selbst wenn keine Anwendungsfehler vorliegen. Im Besonderen können Fehler bei Festschreibungen auftreten, wenn ein großer Nachrichtenstapel verarbeitet wird, selbst wenn kleinere mit den gleichen Informationen verarbeitete Nachrichtenstapel erfolgreich sind.
-
Eine Lösung für dieses Problem ist in einem dritten Beispiel des Stands der Technik vorgesehen – in einer Implementierung wird ein zweiter „kopierter” („cloned”) Nachrichtenfluss bereitgestellt, der mit dem Festschreibezähler = 1 ausgeführt wird. Wenn der erste Nachrichtenfluss eine Nachricht mit Zurückziehungszähler > Zurückziehungsgrenzwert liest, fügt er dies anstatt in die Fehlerwarteschlange in die Eingabewarteschlange des zweiten, „kopierten” Nachrichtenflusses ein (die Nachricht wird in die Eingabewarteschlange mit dem Zurückziehungszähler = 0 eingefügt). Wenn der zweite, „kopierte” Nachrichtenfluss eine Nachricht mit dem Zurückziehungszähler = 0 liest, wird sie auf die gleiche Weise verarbeitet im ersten Nachrichtenfluss. Wenn der zweite, „kopierte” Nachrichtenfluss eine Nachricht mit einem Zurückziehungszähler > Zurückziehungsgrenzwert liest, wird die Nachricht in die Fehlerwarteschlange eingefügt. Wenn, mit Bezugnahme auf das frühere Beispiel, bei der 200. Nachricht im Stapel ein Fehler auftritt, wird der zweite, „kopierte” Nachrichtenfluss die Nachrichten 1 bis 199 erfolgreich verarbeiten und die 200. Nachricht wird wieder zu einem Fehler führen und in die Fehlerwarteschlange eingefügt.
-
Das dritte Beispiel des Stands der Technik führt weitere Probleme ein.
-
Als Erstes schafft das dritte Beispiel des Stands der Technik einen zusätzlichen Administrationsaufwand, da zwei Kopien der Nachrichtenflüsse bereitgestellt und verwaltet werden müssen.
-
Zweitens geht die Reihenfolge der Nachrichten verloren – wenn z. B. eine Nachricht in der Mitte eines großen Stapels zu einem Fehler führt, werden alle Nachrichten im Stapel vom zweiten (kopierten/ge-clonten) Fluss parallel zum ersten (originalen) Fluss verarbeitet. Dies ist möglicherweise für Anwendungen, die Nachrichten in einer bestimmten Reigenfolge verarbeiten müssen, nicht akzeptabel.
-
Diese Probleme werden in der bevorzugten Ausführungsform behandelt, die mit Bezugnahme auf 2 und 3 beschrieben wird.
-
Gemäß der bevorzugten Ausführungsform wird ein Controller (29) (Steuereinheit) bereitgestellt, der in 2 dargestellt ist. Der Controller (200) umfasst ein Prüfprogramm (205) und eine Überschreibungskomponente (210). Das Prüfprogramm (205) ist für den Zugriff auf einen Datenspeicher (215) funktionsfähig, der die Werte eines Nachrichtenzählers, eines Festschreibezählers, eines Zurückziehungszähler und eines Zurückziehungsgrenzwerts speichert. Der Controller (200) ist für die Verwendung mit dem System von 1 funktionsfähig.
-
Der Controller (200) ist funktionsfähig, um den Festschreibezähler konditional zu verwenden: Wenn der Zurückziehungszähler größer Null ist (aber unter dem Zurückziehungsgrenzwert liegt), ignoriert der Controller (200) den Festschreibezähler und schreibt die Transaktion für jede Nachricht fest (wie bei einem Festschreibezähler von 1).
-
Ein Prozess der bevorzugten Ausführungsform wird im Folgenden mit Bezugnahme auf 3 beschrieben.
-
In Schritt 300 wird ein Nachrichtenzähler vor der Verarbeitung anfangs auf Null gesetzt.
-
In Schritt 305 wird eine Nachricht aus der Eingabewarteschlange (135) abgerufen (dies startet eine Transaktion).
-
Der Nachrichtenzähler wird um 1 erhöht.
-
Eine Prüfung (Schritt 310) wird von dem Prüfprogramm (205) durchgeführt, wobei auf den Datenspeicher (215) zugegriffen wird, um zu bestimmen, ob ein Zurückziehungszähler größer als Zurückziehungsgrenzwert ist – ist dies der Fall, wird die Nachricht in die Fehlerwarteschlange (145) eingefügt (Schritt 315).
-
Wenn der Zurückziehungszähler nicht über dem Zurückziehungsgrenzwert liegt, wird die Datenbanktabelle (127) aktualisiert (Schritt 320) und die Nachricht in die Ausgabewarteschlange (140) eingefügt (Schritt 325).
-
Eine weitere Prüfung wird vom Prüfprogramm (205) durchgeführt, wobei auf den Datenspeicher (215) zugegriffen wird, um zu bestimmen, ob der Nachrichtenzähler größer oder gleich dem Festschreibezähler ist oder ob der Zurückziehungszähler größer Null ist.
-
Wenn der Nachrichtenzähler nicht größer oder gleich dem Festschreibezähler ist oder der Zurückziehungszähler nicht größer Null ist, wird eine weitere Nachricht aus der Eingabewarteschlange (135) abgerufen.
-
Wenn der Nachrichtenzähler größer oder gleich dem Festschreibezähler ist, wird die Transaktion festgeschrieben (Schritt 335) (ein Logschreibvorgang wird für die Transaktion erzwungen), und der Nachrichtenzähler wird auf Null gesetzt (Schritt 340).
-
Man beachte auch, dass wenn der Zurückziehungszähler größer Null ist (aber unter dem Zurückziehungsgrenzwert liegt), ignoriert die Überschreibungskomponente (210) den Festschreibezähler und schreibt die Transaktion für jede Nachricht fest (Schritt 335) (wie wenn der Festschreibezähler 1 wäre). Der Nachrichtenzähler wird auf Null gesetzt (Schritt 340).
-
Ein Beispiel wird im Folgenden beschrieben. In dem Beispiel ist der Zurückziehungsgrenzwert „1” und der Festschreibezähler ist „5”.
-
In Schritt 300 wird ein Nachrichtenzähler vor der Verarbeitung ursprünglich auf Null gesetzt (man beachte auch, dass in diesem Beispiel der Zurückziehungszähler Null ist).
-
In Schritt 305 wird eine Nachricht M_1 aus der Eingabewarteschlange (135) abgerufen (dies startet eine Transaktion T_1).
-
Der Nachrichtenzähler wird um 1 erhöht und im Datenspeicher (215) gespeichert.
-
Eine Prüfung (Schritt 310) wird vom Prüfprogramm (205) durchgeführt, um zu bestimmen, ob ein Zurückziehungszähler größer ist als der Zurückziehungsgrenzwert. In dem Beispiel tritt kein Fehler auf, was dazu führt, dass der Zurückziehungszähler „0” bleibt. Da der Zurückziehungszähler („0”) nicht über dem Zurückziehungsgrenzwert („1”) liegt, wird die Datenbanktabelle (127) aktualisiert (Schritt 320) und die Nachricht M_1 in die Ausgabewarteschlange (140) eingefügt (Schritt 325).
-
Eine weitere Prüfung wird vom Prüfprogramm (205) durchgeführt, um zu bestimmen, ob der Nachrichtenzähler („1”) größer oder gleich dem Festschreibezähler („5”) ist, oder ob der Zurückziehungszähler („0”) größer Null ist – da keine dieser Bedingungen wahr ist, wird eine weitere Nachrichten aus der Eingabewarteschlange abgerufen (135).
-
In Schritt 305 wird eine weitere Nachricht M_2 aus der Eingabewarteschlange (135) abgerufen (man beachte, dass die andere Nachricht M_2 mit der gleichen Transaktion T_1 verknüpft ist, die früher gestartet wurde).
-
Der Nachrichtenzähler wird um 1 erhöht, was zu einem Nachrichtenzähler von „2” führt, und im Datenspeicher (215) gespeichert.
-
Eine Prüfung (Schritt 310) wird vom Prüfprogramm (205) durchgeführt, um zu bestimmen, ob der Zurückziehungszähler größer ist als der Zurückziehungsgrenzwert. An diesem Punkt tritt in dem Beispiel ein Fehler auf (in 3 aus Gründen der Übersichtlichkeit nicht dargestellt), was dazu führt, dass die Arbeit (die Transaktion T_1) zurückgesetzt bzw. zurückgezogen wird und die beiden Nachrichten (M_1 und M_2) in die Eingabewarteschlange (135) „zurückgeschrieben” werden. Darüber hinaus wird der Zurückziehungszähler um 1 erhöht, was zu einem Zurückziehungszähler von „1” führt. Der Nachrichtenzähler wird auf „0” (215) gesetzt und im Datenspeicher (215) gespeichert.
-
Der Prozess geht zurück zu Schritt 305, wo die erste Nachricht M_1 erneut aus der Eingabewarteschlange (135) abgerufen wird. Dadurch wird eine neue Transaktion T_2 gestartet.
-
Der Nachrichtenzähler wird um 1 erhöht, was zu einem Nachrichtenzähler von „1” (215) führt.
-
Eine Prüfung (Schritt 310) wird vom Prüfprogramm (2) durchgeführt, um zu bestimmen, ob der Zurückziehungszähler („1”) größer ist als der Zurückziehungsgrenzwert („1”).
-
In dem Beispiel bestimmt das Prüfprogramm (205), dass der Zurückziehungszähler („1”) nicht größer ist als der Zurückziehungsgrenzwert („1”). In der Folge wird die Datenbanktabelle (127) aktualisiert (Schritt 320) und eine erste Meldung M_1 wird in die Ausgabewarteschlange (140) eingefügt (Schritt 325).
-
Eine weitere Prüfung (Schritt 330) wird vom Prüfprogramm (205) durchgeführt, um zu bestimmen, ob der Nachrichtenzähler („1”) größer oder gleich dem Festschreibezähler („5”) ist – diese Bedingung trifft nicht zu.
-
Das Prüfprogramm (205) bestimmt auch, ob der Zurückziehungszähler („1”) größer Null ist (aber unter dem Zurückziehungsgrenzwert von „1” liegt) – diese Bedingung trifft zu.
-
In der Folge übergeht die Überschreibungskomponente (210) den Festschreibezähler von „5” (das heißt, der Nachrichtenzähler muss größer oder gleich dem Festschreibezähler sein, bevor die Transaktion festgeschrieben wird).
-
Stattdessen verursacht die Überschreibungskomponente (210), dass die Transaktion (T_2) festgeschrieben wird (Schritt 335) (das Ergebnis davon entspricht dem, wenn der Festschreibungszähler „1” ist).
-
Der Nachrichtenzähler wird auf „0” (215) (Schritt 340) gesetzt und im Datenspeicher (215) gespeichert.
-
Der Prozess geht zurück zu Schritt 305, wo die zweite Nachricht M_2 erneut aus der Eingabewarteschlange (135) abgerufen wird. Dadurch wird eine neue Transaktion T_3 gestartet.
-
Der Nachrichtenzähler wird um 1 erhöht, was zu einem Nachrichtenzähler von „1” (215) führt.
-
Eine Prüfung (Schritt 310) wird vom Prüfprogramm (205) durchgeführt, um zu bestimmen, ob der Zurückziehungszähler („1”) größer ist als der Zurückziehungsgrenzwert („1”).
-
In dem Beispiel bestimmt das Prüfprogramm (205), dass der Zurückziehungszähler („1”) nicht größer ist als der Zurückziehungsgrenzwert („1”). An diesem Punkt tritt in dem Beispiel erneut ein Fehler auf (in 3 aus Gründen der Übersichtlichkeit nicht dargestellt), was dazu führt, dass die Arbeit (die Transaktion T_3) zurückgesetzt bzw. zurückgezogen wird und die zweite Nachricht M_2) in die Eingabewarteschlange (135) „zurückgeschrieben” wird. Darüber hinaus wird der Zurückziehungszähler um 1 erhöht, was zu einem Zurückziehungszähler von „2” führt. Der Nachrichtenzähler wird auf „0” (215) gesetzt und im Datenspeicher (215) gespeichert.
-
Der Prozess geht zurück zu Schritt 305, wo die erste Nachricht M_1 erneut aus der Eingabewarteschlange (135) abgerufen wird. Dadurch wird eine neue Transaktion T_4 gestartet.
-
Der Nachrichtenzähler wird um 1 erhöht, was zu einem Nachrichtenzähler von „1” (215) führt.
-
Eine Prüfung (Schritt 310) wird vom Prüfprogramm (205) durchgeführt, um zu bestimmen, ob der Zurückziehungszähler („2”) größer ist als der Zurückziehungsgrenzwert („1”).
-
In dem Beispiel bestimmt das Prüfprogramm (205), dass der Zurückziehungszähler („2”) größer ist als der Zurückziehungsgrenzwert („1”). An diesem Punkt wird die zweite Nachricht M_2 in die Fehlerwarteschlange (145) eingefügt (Schritt 315), und die Transaktion T_4 wird festgeschrieben.
-
Der Nachrichtenzähler wird auf Null eingestellt (Schritt 340). Wenn eine weitere Verarbeitung ansteht, wird der Prozess an Schritt 305 übergeben, andernfalls endet der Prozess.
-
Wenngleich es möglich ist, dass ein Konfigurationsattribut vorhanden ist, um das Verhalten der bevorzugten Ausführungsform zu aktivieren oder deaktivieren, ist dies nicht unbedingt erforderlich. Die bevorzugte Ausführungsform stellt das Standardverhalten vorzugsweise immer dann bereit, wenn das Attribut des Zurückziehungsgrenzwerts der Eingabewarteschlange größer 0 ist. Somit wird bei einem Zurückziehungsgrenzwert = 0 die bevorzugte Ausführungsform effektiv deaktiviert. Das ist darin begründet, dass wenn der Zurückziehungsgrenzwert = 0 ist, alle zurückgesetzten bzw. zurückgezogenen Nachrichten an die Fehlerwarteschlange (145) gesendet werden.
-
Zweckmäßigerweise stellt die bevorzugte Ausführungsform durch die konditionale Verwendung des Festschreibezählers sicher, dass nur Nachrichten, die zu Fehlern führen, in die Fehlerwarteschlange (145) eingefügt werden. Nachrichten, die zurückgesetzt bzw. zurückgezogen wurden, weil sie sich im gleichen Stapel wie eine fehlerhafte Nachricht befanden, werden erfolgreich neu verarbeitet und ihre Transaktion wird festgeschrieben, wenn sie erneut abgerufen werden.
-
Weiterhin stellt die bevorzugte Ausführungsform sicher, da der Festschreibezähler konditional verwendet wird, dass wenn bei einem Nachrichtenstapel ein Fehler auftritt, z. B. aufgrund eines vorübergehenden Problems in der Datenbank, das durch die Verwendung eines großes Stapel verursacht wurde (wie die Eskalation einer Sperre, wie oben beschrieben), die Arbeit automatisch erneut verarbeitet wird und erfolgreich sein kann, wenn eine Nachricht pro Transaktion festgeschrieben wird (dies ist das, was vom Verfahren der vorliegenden Erfindung durchgeführt wird, wenn der Zurückziehungszähler größer Null ist).
-
Weiterhin stellt die bevorzugte Ausführungsform zweckmäßigerweise sicher, indem der Festschreibezähler konditional verwendet wird, dass eine Nachrichtenfolge bei Bedarf für alle Nachrichten bewahrt wird, die nicht fehlerhaft sind.
-
Für Fachleuten ist es ersichtlich, dass das gesamte Verfahren oder ein Teil davon der bevorzugten Ausführungsformen der vorliegenden Erfindung geeignet und nützlich in der Ausführung in einer logischen Vorrichtung oder mehreren logischen Vorrichtungen sind, die logische Elemente aufweisen, die zum Durchführen der Schritte des Verfahrens angeordnet sind und dass zu solchen logischen Elementen Hardwarekomponenten, Firmwarekomponenten oder eine Kombination davon gehören können.
-
Ebenso ist es für Fachleute ersichtlich, dass die gesamte logische Anordnung oder ein Teil davon gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung in geeigneter Weise in einer logischen Vorrichtung ausgeführt werden kann, die logische Elemente aufweist, um die Schritte des Verfahrens auszuführen, und dass solche logischen Elemente Komponenten aufweisen können, wie Logikgatter in beispielsweise einem programmierbaren Logikarray oder eines anwendungsspezifischen integrierten Schaltkreises. Diese logische Anordnung kann weiterhin in verwirklichenden Elementen zur temporären oder dauerhaften Errichtung logischer Strukturen in einem solchen Array oder eines solchen Schaltkreises unter Verwendung von beispielsweise einer virtuellen Hardwarebeschreibungssprache ausgeführt sein, die mit einem festen oder übertragbaren Trägermedium gespeichert und übertragen werden kann.
-
Es ist hervorzuheben, dass das oben beschriebene Verfahren und Anordnung in geeigneter Weise vollständig oder teilweise in Software ausgeführt werden können, die auf einem oder mehreren Prozessoren ausgeführt wird (nicht in den Fig. dargestellt), und dass die Software in Form eines oder mehrerer Computerprogrammelemente bereitgestellt werden kann, die auf jedem geeigneten Datenträger (ebenso nicht in den Fig. dargestellt) ausgeführt werden, wie eine Magnet- oder optischen Platte oder Ähnliches. Kanäle für die Datenübertragung können ebenso Speichermedien aller Beschreibungen sowie signalübertragende Medien wie kabelgebundene oder drahtlose signalübertragende Medien sein.
-
Die vorliegende Erfindung kann weiterhin in geeigneter Weise als Computerprogramm zur Verwendung mit einem Computersystem ausgeführt werden. Eine solche Implementierung kann eine Reihe von computerlesbaren Anweisungen aufweisen, die entweder auf einem materiellen Medium wie einem computerlesbaren Medium, wie eine Diskette, CD-ROM, ROM oder Festplatte, fest gespeichert sind oder auf ein Computersystem über ein Modem oder ein anderes Schnittstellengerät über ein materielles Medium, wie ohne darauf beschränkt zu sein, optische und analoge Datenübertragungsleitungen, oder nicht-materielle Funktechnologien, wie ohne darauf beschränkt zu sein Mikrowellen-, Infrarot- oder anderer Übertragungstechniken, übertragen werden. Die Folge der computerlesbaren Anweisungen verkörpert die gesamte oder einen Teil der hier beschriebenen Funktionalität.
-
Fachleute werden verstehen, dass diese computerlesbaren Anweisungen in verschiedenen Programmiersprachen erstellt werden können, die für viele Computerarchitekturen oder Betriebssysteme verwendet werden können. Weiterhin können diese Anweisungen mit jeder aktuellen oder zukünftigen Speichertechnologie gespeichert werden, einschließlich, ohne darauf beschränkt zu sein, Halbleiter-, magnetische oder optische Technologien, oder mit einer beliebigen aktuellen oder zukünftigen Datenübertragungstechnologie übertragen werden, einschließlich ohne darauf beschränkt zu sein, optische Verfahren, Infrarot und Mikrowelle. Es ist vorgesehen, dass ein solches Computerprogrammprodukt als entfernbares Medium mit begleitender gedruckter oder elektronischer Dokumentation verteilt werden kann, zum Beispiel als eingeschweißte Software, die bereits auf einem Computersystem geladen ist, beispielsweise auf einem System-ROM oder einer Festplatte oder über einen Server oder ein elektronisches Bulletin Board über ein Netzwerk, wie das Internet oder das World Wide Web, verteilt wird.
-
In einer Alternative kann die bevorzugte Ausführungsform der vorliegenden Erfindung in Form eines auf einem Computer implementierten Verfahrens zur Bereitstellung von Diensten verwirklicht werden, das die Schritte des Bereitstellens von Computerprogrammcode aufweist, der bei der Bereitstellung in einer Computerinfrastruktur und der Ausführung darin einsatzfähig ist, das Computersystem zur Ausführung aller Schritte des beschriebenen Verfahrens zu veranlassen.
-
Für Fachleute ist es ersichtlich, dass viele Verbesserungen und Änderungen an der obigen beispielhaften Ausführungsform vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen.