Konzept Polling

IFS-Logo Diese Seite ist ein Teil der IsyFact-Standards. Alle Inhalte der Seite, insbesondere Texte und Grafiken, sind urheberrechtlich geschützt. Alle urheberrechtlichen Nutzungs- und Verwertungsrechte liegen beim Bundesverwaltungsamt.

Creative Commons Namensnennung Die Nutzung ist unter den Lizenzbedingungen der Creative Commons Namensnennung 4.0 International gestattet.

Java Bibliothek / IT-System

Name Art Version

isy-polling

Bibliothek

v3.2.x

1. Einleitung

Dieses Dokument beschreibt die konzeptionellen Grundlagen des Bausteins Polling.

In Geschäftsanwendung und Service-Gateway müssen manchmal Polling-basierte Schnittstellen angesprochen werden. Polling bedeutet, dass in regelmäßigen Intervallen neue Daten zur Verarbeitung abgeholt werden. Die Schnittstellen nutzen unterschiedliche technische Verfahren wie IMAP, Web-Services oder proprietäre Datenbank-basierte Schnittstellen, weitere sind denkbar.

Aus Gründen der Ausfallsicherheit soll die Abholung der Daten von mehreren Instanzen einer Anwendung durchgeführt werden. Diese Instanzen müssen synchronisiert werden, sodass Nachrichten nicht mehrfach verarbeitet werden. Die zugrunde liegenden Schnittstellen-Technologien bieten dafür kein Standardverfahren an.

In Abbildung 1 wird diese Situation dargestellt.

polling loadbalancer einfach
Abbildung 1. Polling unter Verwendung eines Loadbalancers

2. Verfahren für das Polling

Das Polling erfolgt über mehrere Instanzen der Anwendung. Es darf zu einem Zeitpunkt aber nur eine Instanz das Polling aktiv durchführen, um das mehrfache Abrufen von Daten zu verhindern. Die Abstimmung darüber, welche Instanz das Polling aktiv durchführt, erfolgt automatisch.

Hierzu verwaltet jede Instanz den Zeitstempel ihrer letzten Polling-Aktivität und stellt den seit ihrer letzten Polling-Aktivität vergangenen Zeitraum per JMX bereit. Der Zeitraum wird anhand des Zeitstempels und der aktuellen Systemzeit beim Abruf des Wertes über JMX ermittelt. Es wird der Zeitraum und nicht der Zeitpunkt über JMX bereitgestellt, da hiermit das Problem nicht synchron laufender Uhren auf den einzelnen Servern keine Probleme bereitet.

Der Ablauf des Pollings in jeder Instanz ist dann wie folgt:

  1. Es werden die seit der letzten Polling-Aktivität vergangenen Zeiträume aller anderen Instanzen über JMX ermittelt.

  2. Wenn der Zeitraum seit der letzten Polling-Aktivität einer anderen Instanz kleiner als eine Wartezeit X ist, wird die Verarbeitung abgebrochen.

  3. In allen anderen Fällen (keine Instanz erreichbar, keine Zeiträume gesetzt, alle Zeiträume größer als eine Wartezeit X) wird mit der Verarbeitung fortgefahren.

  4. Zu Beginn des Abrufs von Nachrichten wird der eigene Zeitstempel auf den aktuellen Zeitpunkt gesetzt.

  5. Während der Verarbeitung der einzelnen Nachrichten wird der Zeitstempel aktualisiert.

  6. Am Ende der Verarbeitung aller abgerufenen Nachrichten wird der Zeitstempel nochmals aktualisiert.

In Abbildung 2 wird das Verfahren dargestellt.

polling loadbalancer jmx
Abbildung 2. Angepasstes Verfahren zum Polling

Dieses Verfahren bietet im Regelfall einen sehr guten Schutz gegen Mehrfachverarbeitung. Es kann aber z.B. bei Netzproblemen dazu kommen, dass mehrere Instanzen parallel arbeiten. Dies lässt sich prinzipiell durch die Abstimmung per JMX nicht zu 100% ausschließen.

Daher ist es nötig, im Rahmen der Verarbeitung eingegangener Daten weitere Maßnahmen zu treffen. Hierzu wird in der Geschäftsanwendung, die die Nachrichten verarbeitet, eine Tabelle für alle eingehenden Daten in der Datenbank angelegt.

Eine solche Tabelle ist häufig bereits vorhanden. In dieser Tabelle wird eine zusätzliche Spalte hinzugefügt, die einen Schlüssel aus dem Fremdsystem aufnimmt. Dieser Fremdsystemschlüssel kann je nach anlieferndem System z.B. die SMTP-Message-ID, ein Datenbankschlüssel oder auch ein Hashwert sein. Die Spalte wird mit einem Unique Constraint versehen. So können datenbankseitig Duplikate sicher erkannt werden.

Dafür ist es notwendig, diesen Fremdsystemschlüssel bis in die Geschäftsanwendung zu transportieren, also z.B. vom Mail-Server über das Mail-Gateway. Da nur die Datenbank als transaktionales System die Eindeutigkeit der IDs garantieren kann, wird dies in Kauf genommen.

In <<polling-nachrichten-tabelle> wird das noch einmal illustriert.

polling nachrichten tabelle
Abbildung 3. Nachrichten-Tabelle

Näheres zu den Nutzungsvorgaben des Bausteins findet sich in dem Polling - Nutzungsvorgaben.