Der zentrale Dispatcher ermittelt die Einträge der DBQueue (Tabelle DialogDBQueue) und verschiebt die Aufträge in die Tabelle QBMDBQueueCurrent mit der Zuordnung Auftrag pro Slot.
Beispiel für Einträge in den Tabellen DialogDBQueue und QBMDBQueueCurrent
Name des Auftrags | Objekt |
---|---|
OrgRoot |
A |
OrgRoot |
B |
ADSAccountInADSGroup |
X |
ADSAccountInADSGroup |
Y |
ADSAccountInADSGroup |
Z |
Slotnummer | Name des Auftrags | Objekt |
---|---|---|
001 |
OrgRoot |
A |
001 |
OrgRoot |
B |
002 |
ADSAccountInADSGroup |
X |
002 |
ADSAccountInADSGroup |
Y |
002 |
ADSAccountInADSGroup |
Z |
Jeder Prozess verarbeitet die Aufträge, die für seinen Slot in die Tabelle QBMDBQueueCurrent eingestellt werden. Folgeaufträge, die aus der Verarbeitung resultieren, werden in die Tabelle DialogDBQueue eingestellt.
Wenn ein Prozess seine Aufträge abgearbeitet hat und keine weiteren Aufträge anstehen, wird die Slotnummer in der Tabelle QBMDBQueueCurrent durch den Prozess selbst auf 0 gesetzt. Der Eintrag verbleibt zunächst in der Tabelle QBMDBQueueCurrent, wird jedoch nicht mehr beachtet (da Slot 0 kein aktiver Slot ist).
In regelmäßigen Abständen werden alle Einträge mit Slotnummer 0 aus der Tabelle QBMDBQueueCurrent gelöscht.
Slotnummer | Bedeutung |
---|---|
001 - n |
Nummer des Slots, in dem ein Auftrag zu verarbeiten ist. |
0 |
Zustand nach ordnungsgemäßer Erledigung des Auftrags. |
-1 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen laufender Synchronisation. Der zentrale Dispatcher reaktiviert diesen Auftrag. HINWEIS: Das Zurückstellen von DBQueue Aufträgen wird im Systemprotokoll aufgezeichnet. |
-2 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen Blockierungen. Der zentrale Dispatcher reaktiviert diesen Auftrag. |
-3 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen noch vorhandener Einträge in der Jobqueue. Der zentrale Dispatcher reaktiviert diesen Auftrag. |
Nutzung des DBQueue Puffers
Um Blockaden bei der Verarbeitung der Aufträge in der DBQueue durch langlaufende Aktionen, wie beispielsweise Synchronisationen, zu verhindern, wird ein DBQueue Puffer (Tabelle QBMDBQueuePond) genutzt. Synchronisationen schreiben ihre DBQueue Prozessor Aufträge zunächst in die Tabelle QBMDBQueuePond. Nach Abschluss der Synchronisation werden die Einträge aus der Tabelle QBMDBQueuePond in die Tabelle DialogDBQueue verschoben.
Sollte eine langlaufende Aktion über einen definierten Zeitraum keine weiteren Einträge im DBQueue Puffer erzeugen, weil beispielsweise eine Synchronisation nicht korrekt beendet wurde, werden verbliebene Einträge der Tabelle QBMDBQueuePond in die Tabelle DialogDBQueue verschoben. Der Zeitraum ist im Konfigurationsparameter QBM | DBQueue | BufferTimeout festgelegt (Standard: 120 Minuten). Die Übernahme der Einträge erfolgt innerhalb der täglichen Wartungsaufträge.