-
ALLGEMEINER
STAND DER TECHNIK
-
Technisches
Gebiet
-
Diese
Erfindung betrifft die Mehrpunkt-Veröffentlichungs/Abonnement-Kommunikation
und insbesondere die Zustellung und Warteschlangeneinreihung von
zertifizierten Nachrichten zwischen computergestützten Mehrpunkt-Herausgeber-
und Abonnentenanwendungen.
-
Hintergrund
-
Bei
einer typischen Technik des anonymen Veröffentlichens/Abonnierens, wie
sie zum Beispiel in den US-Patenten Nr. 5,557,798, Nr. 5,339,392,
Nr. 5,257,369 und Nr. 5,187,787 beschrieben sind, veröffentlicht eine
Herausgeberanwendung Informationen an anfordernde oder Abonnentenanwendungen
ohne Kenntnis der Anzahl, Identität oder Adresse solcher Abonnentenanwendungen.
Es kann sogar sein, dass gar keine Abonnentenanwendungen existieren.
Anstatt Kenntnis über
Abonnenten zu haben, veröffentlicht
ein Herausgeber lediglich Informationen, wobei eine Kontext- oder Themen-"Markierung" auf die veröffentlichte
Nachricht angewendet wird. Ein Abonnent identifiziert dann gewünschte Nachrichten
anhand der Inhaltsmarkierung und empfängt nur jene Nachrichten, die
für den
gewünschten
Inhalt relevant sind.
-
Die
Vorteile solcher inhaltsbasierter Veröffentlichungs/Abonnement-Adressierungssysteme
sind allgemein bekannt. Zu ihnen gehört die Fähigkeit, Abonnenten und Herausgeber
voneinander zu entkoppeln. Dieses Entkoppeln gestattet es Herausgebern
und Abonnenten zu operieren, ohne eine Kenntnis der Identität, des Standortes,
der Adresse oder der Kommunikationsprotokolle des jeweils anderen
zu besitzen. Die Flexibilität,
die dadurch erreicht wird, ist enorm, und dementsprechend gewinnen
solche inhalts-/Themengestützten Adressierungskommunikationsumgebungen
zunehmend an Beliebtheit.
-
Leider
verhindern genau diese Vorteile (wie zum Beispiel das anonyme Entkoppeln)
dieser Systeme die Verwendung herkömmlicher zuverlässiger Nachrichtenübermittlungsprotokolle
wie zum Beispiel TCP. TCP und andere zuverlässige Nachrichtenübermittlungsprotokolle
haben nur in der Punkt-zu-Punkt-Kommunikation Gültigkeit. In dieser Punkt-zu-Punkt-Kommunikation
werden Nachrichtenabsender und -empfänger direkt miteinander verbunden
und kennen daher die Adresse und den Standort des jeweils anderen.
-
Leider
erfordern diese zuverlässigen
Nachrichtenübermittlungsprotokolle,
welche die Ankunft und die Reihenfolge des Eintreffens von Nachrichten
garantieren, die vorherige Kenntnis zwischen Anwendungen. Sie können darum
auf typische Veröffentlichungs/Abonnement-Umgebungen
nicht angewendet werden.
-
Ungeachtet
dessen ist eine solche zuverlässige
oder zertifizierte Zustellung von Nachrichten überaus wichtig. Zum Beispiel
wird eine zertifizierte Zustellung angeraten, wenn eine Absendeanwendung
eine individuelle Bestätigung
der Zustellung für
jede Nachricht, die sie sendet, benötigt. Zum Beispiel berechnet
ein Handelsvertreter Absatzzahlen auf einem Laptopcomputer und sendet
sie an einen Vorgesetzten im Büro.
Der Nutzer muss mit Bestimmtheit wissen, dass die Daten angekommen
sind und in den Absatzbericht des Vorgesetzten aufgenommen wurden.
-
Eine
zertifizierte Zustellung ist auch angeraten, wenn eine Empfangsanwendung
es sich nicht leisten kann, Nachrichten zu verpassen. Zum Beispiel
ist in einer Anwendung, die Bestellungen für den Kauf und Verkauf von
Bestandsgütern
verarbeitet, jede Bestellung wichtig. Wenn Bestellungen ausgelassen
werden, so sind die Bestandsaufzeichnungen falsch.
-
Des
Weiteren ist eine zertifizierte Zustellung angeraten, wenn jede
Nachricht zu einem bestimmten Thema auf Informationen in der vorherigen
Nachricht mit diesem Thema aufbaut. Zum Beispiel aktualisiert ein Absendeprogramm
eine Empfangsdatenbank, die einen Teil der Daten in einem Datensatz
liefert, aber andere Teile der Daten unverändert lässt. Die Datenbank ist nur
korrekt, wenn alle Aktualisierungen in der Reihenfolge ankommen,
in der sie gesendet wurden.
-
Des
Weiteren ist eine zertifizierte Zustellung in Situationen von intermittierender
physischer Konnektivität
angeraten, wie zum Beispiel bei diskontinuierlichen Netzwerkverbindungen,
zum Beispiel einer Anwendung, in der mehrere mobile Laptopcomputer
miteinander kommunizieren müssen.
Die Konnektivität
zwischen Mobileinheiten ist sporadisch und erfordert eine ständige Speicherung
von Nachrichten, bis die richtigen Verbindungen wiederhergestellt
sind.
-
Darum
besteht ein durchaus realer Bedarf, sowohl über die Vorteile der zertifizierten
Nachrichtenübermittlung
als auch die Vorteile von inhaltsbasierten anonymen Veröffentlichungs/Abonnement-Umgebungen
zu verfügen.
-
Im
Stand der Technik gibt es auch ein Multitasking-Multiuser-System, das eine effiziente
Datenübermittlung,
wie zum Beispiel Aktienmarktdaten, von einer räumlich abgesetzten Datenbank
zu individuellen Abonnenten ermöglicht
(EP 0 258 867 - A2). In diesem System werden Daten von unterschiedlicher
Art von einer räumlich
abgesetzten Datenbank in Reaktion auf Nichtüberwachungsanforderungen für Daten
von Abonnenten und konkrete Überwachungsanforderungen
für Daten
von individuellen Abonnenten empfangen. Das System verwendet einen
primären
Anbieterprozess und weitere Anbieterprozesse zur Anfragehandhabung und
-überwachung.
In dem primären
Anbieterprozess wird ein Datenstrom aus mehreren Datenarten entsprechend
den Datenarten in mehrere Datenströme aufgeteilt. Ausgewählte Datenströme werden
in Reaktion auf Nichtüberwachungsanforderungen
direkt zu den Abonnenten übertragen.
Mindestens ein Datenstrom wird in Reaktion auf konkrete Überwachungsanforderungen
zu wenigstens einem zweiten Anbieterprozess übertragen, der dann den Datenstrom
in Reaktion auf die konkreten Überwachungsanforderungen
in weitere Datenströme
unterteilt und sie an einen Nutzerprozess überträgt.
-
Dieses
System befasst sich nicht mit der zertifizierten Zustellung von
Nachrichten.
-
KURZDARSTELLUNG
DER ERFINDUNG
-
Die
Erfindung betrifft ein computergestütztes Veröffentlichungs/Abonnement-System
mit einer Abonnentenanwendung, die zuvor den Empfang einer bestimmten
Art von Nachrichten abonniert hat, und ein Verfahren zum Zustellen
von Nachrichten von einer Herausgeberanwendung an die Abonnentenanwendung,
wobei die Herausgeberanwendung und die Abonnentenanwendung Teil
eines anonymen Veröffentlichungs/Abonnement-Computersystems
sind.
-
Wie
in den Ansprüchen
definiert, sieht die Erfindung vor, dass in der Herausgeberanwendung
eine Zertifizierte-Nachrichten-Abonnementanforderung
empfangen wird, wobei die Zertifizierte-Nachrichten-Abonnementanforderung
einen Abonnentennamen, der die Abonnentenanwendung identifiziert,
eine Adresse, wo die Abonnentenanwendung Nachrichten empfängt, und
einen Themennamen enthält,
welcher der konkreten Art der Nachricht, für die eine Zertifizierte-Nachrichten-Sitzung eingerichtet
wird, zugeordnet ist und welcher diese konkrete Art der Nachricht
identifiziert.
-
Eine
Zertifizierte-Nachrichten-Abonnementanforderung wird empfangen,
woraufhin die Zertifizierte-Nachrichten-Sitzung mit der Abonnentenanwendung
eingerichtet wird, indem der Abonnentenname einem Nachrichtenregister
in der Herausgeberanwendung hinzugefügt wird und eine Bestätigungsnachricht
an die Abonnentenanwendung übermittelt
wird, wobei die Bestätigungsnachricht
die Einrichtung der Zertifizierte-Nachrichten-Sitzung bestätigt.
-
Die
Zustellung einer zertifizierten Nachricht der konkreten Art wird
entsprechend der Zertifizierte-Nachrichten-Sitzung versucht, indem
der zertifizierten Nachricht eine Folgenummer zugewiesen wird, die zertifizierte
Nachricht an die Adresse adressiert wird, wo die Abonnentenanwendung
Nachrichten empfängt, die
zertifizierte Nachricht von der Herausgeberanwendung an die Abonnentenanwendung übermittelt
wird, ein Versuch der Zustellung der zertifizierten Nachricht in
dem Register aufgezeichnet wird und die zertifizierte Nachricht
wenigstens so lange in dem Register aufbewahrt wird, bis die Herausgeberanwendung
eine Bestätigungsnachricht
von der Abonnentenanwendung empfangen hat, die den Empfang der zertifizierten
Nachricht in der Abonnentenanwendung bestätigt.
-
Vorteile der
Erfindung
-
Die
Erfindung hat einer Anzahl von Vorteilen. Zum Beispiel gewährt sie:
-
Gewissheit
-
Eine
zertifizierte Zustellung gibt Anwendungsprogrammen die Gewissheit,
dass jede Nachricht den vorgesehenen Empfänger in der gesendeten Reihenfolge
erreicht. Wenn eine Zustellung nicht möglich ist, so erhalten sowohl
der Absender als auch – optional – Mithörer ausdrückliche
Informationen über
jede nicht-zugestellte Nachricht.
-
Komfort
-
Sobald
ein Programm eine zertifizierte Nachricht sendet, setzt das System
seine Zustellversuche fort, bis die Zustellung erfolgreich ist oder
bis eine Zeitbegrenzung für
die Nachricht abgelaufen ist.
-
Kontrolle
-
Anwendungsprogramme
bestimmen eine ausdrückliche
Zeitbegrenzung für
jede Nachricht.
-
Absendeanwendungen
können
eine zertifizierte Zustellung an bestimmte Mithörsitzungen unterbinden.
-
Detailliertheit
-
Das
System kann auch Hinweisnachrichten übermitteln, um Anwendungsprogramme über alle
wichtigen Ereignisse in Bezug auf die Zustellung zu informieren.
-
Prozessbasierte oder dateibasierte
Aufzeichnung
-
Das
System kann auch den Status jeder Nachricht in einem Register aufzeichnen.
Anwendungen, die eine Zertifizierung nur für die Dauer des Anwendungsprozesses
benötigen,
können
ein prozessbasiertes Register wählen.
Anwendungen, die eine Zertifizierung benötigen, die über Prozessbeendigung und -neustart
hinausgeht, können
ein dateibasiertes Register wählen.
-
Die
Erfindung wird im Folgenden eingehender anhand der begleitenden
Zeichnungen beschrieben.
-
BESCHREIBUNG
DER ZEICHNUNGEN
-
In
den angehängten
Zeichnungen ist Folgendes dargestellt:
-
1 ist
eine schematische Darstellung einer typischen Veröffentlichungs/Abonnement-Umgebung, die
sich zur Veranschaulichung dieser Erfindung eignet.
-
2 ist
eine schematische Darstellung einer typischen Veröffentlichungs/Abonnement-Umgebung, die
sich zur Veranschaulichung der Aspekte der verteilten Warteschlangeneinreihung
und Aufgabenplanung der Erfindung eignet.
-
KONKRETE BESCHREIBUNG
-
ÜBERBLICK
-
1 zeigt
eine Herausgeberanwendung (Absender) 10 und mehrere Abonnentenanwendungen
(Mithörer) 20, 20' und 20''. In der bevorzugten Ausführungsform
dieser Erfindung sind der Herausgeber und der oder die Abonnenten
Software-Anwendungen,
die auf einem oder mehreren Computern arbeiten, die über ein Netzwerk 30 miteinander
verbunden sind, das einen Datenpfad zwischen den Anwendungen bildet.
Der Herausgeber 10 und der oder die Abonnenten 20 implementieren
vorzugsweise ein inhaltsbasiertes Kommunikationsprotokoll, bei dem
ein Herausgeber eine Nachricht herausgibt, die nur den Inhalt der
Nachricht anzeigt, und ohne die Identität oder die Protokolle zu kennen,
die von dem oder den Abonnenten 20 verwendet werden. Diese
Kommunikation zwischen Anwendungen wird durch Kommunikationsdämonen 12 (die
einem Herausgeber/Absender zugeordnet sind) und 22, 22' und 22'' (die dem Abonnenten/Mithörer 20, 20' und 20'' zugeordnet sind) hergestellt.
Die in dieser Figur gezeigte Anordnung ist allgemein bekannt und
wird in vielen Publika tionen, einschließlich der oben angeführten Patente,
beschrieben.
-
Wie
weiter unten noch viel eingehender besprochen wird, kann sich ein
Mithörer 20 bei
einem bestimmten Herausgeber 10 anmelden, um zertifizierte
Nachrichten zu empfangen. Diese Kommunikation enthält den Namen
des Abonnenten, seine "Posteingangsfach"-Adresse und das
Thema oder den Inhalt von Nachrichten, über die er Informationen braucht.
Der Herausgeber 10 hat darum eine Liste mit Abonnentennamen
und Posteingangsfächern
(weiß aber
sonst nichts weiter über
den Abonnenten) für
alle Abonnenten, die zertifizierte Nachrichten erhalten möchten. Der
Herausgeber/Absender 10 erwartet daher eine Bestätigung jeder
Nachricht, die er heraussendet; eine Bestätigung, die er von einem Abonnenten/Mithörer 20, 20' und/oder 20'' empfangen würde. Auf jeden Fall sendet
der Herausgeber/Absender 10, wenn er keine Bestätigung empfängt, eine
Bestätigungsanforderungsnachricht – in der
Regel über
eine zuvor festgelegte Zeitdauer oder Anzahl von "Absendungen".
-
Falls
der Abonnent eine garantierte Zustellung von Nachrichten wünscht, kann
der Herausgeber die Nachricht auf einer Festplatte (oder einem anderen
Speichermedium) speichern, bis eine Bestätigung des Empfangs beim Abonnenten
erfolgt. So kann der Abonnent bis zum Verfall (Time-out) der Nachricht
die Nachricht zu einem späteren
Zeitpunkt empfangen, indem er den Herausgeber kontaktiert. Dies
geschieht in der Regel dann, wenn Nachrichten stark von ihrer Reihenfolge
abhängig
sind oder auf einer vorangegangenen Nachricht aufbauen. Unter diesen
Umständen
könnten
fehlende oder nicht-empfangene Nachrichten einen Totalausfall zur
Folge haben. Des Weiteren bekommt bei diesen (und in den meisten
Anwendungen zur zertifizierten Nachrichtenübermittlung dieser Erfindung)
jede zertifizierte Nachricht eine Rückverfolgungsnummer zugewiesen.
Dies gestattet es sowohl dem Absender als auch dem Mithörer/Abonnenten
zu überwachen,
welche Nachrichten empfangen wurden und/oder fehlen.
-
In
vielen Anwendungen ist die Datenkommunikation überaus zuverlässig, aber
in einigen Situationen erfordern Anwendungen eine noch größere Zustellungsgewissheit.
Eine zertifizierte Zustellung bietet eine größere Zustellungsgewissheit
selbst in Situationen, wo Prozesse und ihre Netzwerkverbindungen
instabil sind.
-
ZERTIFIZIERTE
NACHRICHTENÜBERMITTLUNG
-
Aktivieren
einer Zustellverfolgungssitzung
-
Der
erste Schritt in Richtung einer zertifizierten Zustellung ist die
Aktivierung einer Zustellverfolgungssitzung. Eine Zustellverfolgungssitzung
beginnt als eine gewöhnliche
anonyme Veröffentlichungs/Abonnement-Sitzung;
das Aktivieren einer Sitzung fügt
Informationen hinzu, so dass sie an Protokollen für eine zertifizierte
Zustellung teilnehmen kann. Die zusätzlichen Informationen enthalten
einen Namen und ein Register.
-
Zustellverfolgungssitzungen
können
Nachrichten senden und empfangen, wie es auch gewöhnliche Sitzungen
können.
Darüber
hinaus können
Zustellverfolgungssitzungen an Rufen für eine zertifizierte Zustellung
(das heißt,
Rufen in der rvcm-Bibliothekschicht) teilnehmen; gewöhnliche
Sitzungen können
nicht an diesen Rufen teilnehmen. (Es ist die Asymmetrie zu beachten.
Zustellverfolgungssitzungen können
an gewöhnlichen
Rufen teilnehmen, aber gewöhnliche
Sitzungen können
nicht an Rufen für
eine zertifizierte Zustellung teilnehmen.)
-
Jede
Zustellverfolgungssitzung hat einen Namen, der wiederverwendbar
oder nicht-wiederverwendbar sein kann. Der Name identifiziert die
Sitzung für
andere Zustellverfolgungssitzungen und ist Teil der Markierung,
die abgehende Nachrichten von der Sitzung identifiziert.
-
Ein
Name ist wiederverwendbar, wenn ein Programm ihn ausdrücklich an
den Aktivierungsruf übermittelt.
Wenn eine Sitzung mit einem wiederverwendbaren Namen auch ein dateibasiertes
Register hat, so arbeitet sie als eine Instanz eines dauerhaften
Korrespondenten, was eine Kontinuität der zertifizierten Zustellung über die
Sitzungsbeendigung und Programmneustarts hinaus gestattet.
-
Es
dürfen
nicht zwei Zustellverfolgungssitzungen denselben wiederverwendbaren
Namen binden; das heißt,
jeder wiederverwendbare Name muss jederzeit einmalig sein. Sitzungen
können
einen Namen der Reihe nach wiederverwenden, aber nicht gleichzeitig.
Ein Verstoß gegen
diese Regel kann die zertifizierte Zustellung erheblich behindern.
In der Regel haben Sitzungsnamen die gleiche Syntax wie Themennamen.
-
Programme
können
einen Namen in dem Aktivierungsruf weglassen, wobei in einem solchen
Fall der Ruf einen einmaligen, nicht-wiederverwendbaren Namen für die Sitzung
erzeugt. Keine andere Sitzung auf einem Computer darf jemals den
gleichen Namen haben. Infolge dessen arbeitet eine Sitzung mit einem nicht-wiederverwendbaren
Namen als ein Übergangskorrespondent.
Keine nachfolgende Sitzung darf das Verhalten einer zertifizierten
Zustellung der Sitzung fortführen.
-
Wird
eine Zustellverfolgungssitzung aktiviert, so wird ein Register für sie erzeugt.
Software für
zertifizierte Zustellung verwendet das Register zum Aufzeichnen
von Informationen über
jede ungelöste
abgehende zertifizierte Nachricht, jedes Thema, für das diese
Sitzung (an kommende) zertifizierte Nachrichten empfängt, und
andere kooperierende Zustellverfolgungssitzungen.
-
Programme
können
das Register in einer Registerdatei oder in einem prozessbasierten
Speicher innerhalb des laufenden Programms speichern. (Selbst wenn
eine Sitzung eine Registerdatei verwendet, kann sie mitunter Teile
des Registers aus Effizienzgründen
in prozessbasiertem Speicher speichern. Allerdings können sich
Programmierer nicht auf diese Replikation verlassen.)
-
Registerdateien
müssen
einmalig sein. Das heißt,
es dürfen
nicht zwei Sitzungen die gleiche Registerdatei (gleichzeitig) verwenden.
Wenn ein Betriebssystem Rohspeichervorrichtungen (auch Rohpartitionen genannt)
unterstützt,
so kann eine Speichervorrichtung auch als die Registerdatei spezifiziert
werden.
-
Eine
Sitzung mit einem dateibasierten Register und einem wiederverwendbaren
Namen kommt als ein dauerhafter Korrespondent in Betracht, mit dem
Verhalten einer zertifizierten Zustellung, das über eine Sitzungsbeendigung
hinausreichen kann.
-
Markierte
Nachrichten
-
Eine
markierte Nachricht ist wie eine gewöhnliche Nachricht, außer dass
sie Zusatzinformationen enthält,
die von Zustellverfolgungssitzungen für die zertifizierte Nachrichtenzustellung
verwendet werden können:
Der
Name der Zustellverfolgungssitzung, von der die Nachricht versandt
wurde.
-
Eine
Folgenummer, die durch die Sendesitzung zugewiesen wurde.
-
Senden einer
markierten Nachricht
-
Jede
Zustellverfolgungssitzung kann eine markierte Nachricht versenden,
indem sie die Senderufe in der Bibliothekschicht der zertifizierten
Nachrichtenzustellung nutzt. Beispiele solcher Zustellverfolgungssenderufen
sind in der folgenden Tabelle gezeigt:
-
Empfangen einer markierten
Nachricht
-
Für eine bessere
Klarheit werden zwei Arten von Mithör-Endpunkten unterschieden.
Ein gewöhnlicher Mithörer ist
ein Mithörer,
der mit einem gewöhnlichen
Mithörruf
erzeugt wird, wie zum Beispiel die C-Funktionen rv_ListenInbox ()
oder rv_ListenSubject (). Ein Zustellverfolgungsmithörer ist
ein Mithörer,
der mit einem Zustellverfolgungsmithörruf erzeugt wird, wie zum
Beispiel die C-Funktionen
rvcm_ListenInbox () oder rvcm_ListenSubject ().
-
Jede
Art von Mithör-Endpunkt
kann eine markierte Nachricht empfangen: Zustellverfolgungsmithörer (die
durch die Bibliothek für
die zertifizierte Zustellung erzeugt werden) wie auch gewöhnliche
Mithörer.
-
Wenn
ein gewöhnlicher
Mithörer
eine markierte Nachricht empfängt,
so übermittelt
er sie an die entsprechende Rückruffunktion,
als wenn sie eine gewöhnliche
Nachricht wäre.
Das heißt,
er ignoriert die Zusatzinformationen, die eine markierte Nachricht
unterscheiden.
-
Wenn
ein Zustellverfolgungsmithörer
eine markierte Nachricht empfängt,
so hängt
sein Verhalten vom Kontext ab:
Wenn ein Zustellverfolgungsmithörer für eine zertifizierte
Zustellung angemeldet ist, so übermittelt
er die Zusatzinformationen an die Rückruffunktion.
-
Wenn
ein Zustellverfolgungsmithörer
nicht für
eine zertifizierte Zustellung angemeldet ist, so übermittelt
er einen "null"-Absendernamen an
die Rückruffunktion,
mit einer Folgenummer "null".
-
Darüber hinaus
verlangt die Bibliothek für
eine zertifizierte Zustellung gegebenenfalls automatisch, dass der
Absender den Mithörer
für eine
zertifizierte Zustellung anmeldet.
-
FESTSTELLUNG
UND ANMELDUNG EINER ZERTIFIZIERTEN ZUSTELLUNG
-
Feststellung
-
Wenn
ein Zustellverfolgungsmithörer
eine markierte Nachricht von einem Zustellverfolgungsabsender empfängt, der
nicht in dem Register des Mithörers
aufgelistet ist, so stellt der Mithörer den Absender anhand des
Nachrichtenthemas fest.
-
Drei
Ereignisse folgen auf die Feststellung:
Die Software für zertifizierte
Zustellung fügt
den Namen des Absenders zu dem Register des Mithörers als eine Quelle von Nachrichten
zu dem Thema hinzu.
-
Die
Software für
zertifizierte Zustellung in dem Mithörprogramm kontaktiert das Absendeprogramm, um
eine Anmeldung für
eine zertifizierte Zustellung des Themas und Informationen bezüglich der
Vereinbarung anzufordern.
-
Die
Software für
zertifizierte Zustellung übermittelt
eine ANMELDUNGSFESTSTELLUNGS-Hinweismeldung an das Mithörprogramm.
-
Anmeldung
-
Wenn
ein Zustellverfolgungsabsender eine Anmeldungsanforderung von einem
Zustellverfolgungsmithörer
empfängt,
so nimmt der Absender automatisch die Anforderung entgegen. Eine
Entgegennahme besteht aus diesen vier Ereignisse:
Die Software
für zertifizierte
Zustellung meldet den Mithörer
für eine
zertifizierte Zustellung des Themas an und zeichnet diesen Fakt
im Register des Absenders auf.
-
Die
Software für
zertifizierte Zustellung in dem Absendeprogramm benachrichtigt die
Mithörersitzung, dass
die angeforderte Anmeldung angenommen wurde. Der Absender übernimmt
die Zuständigkeit
für eine zertifizierte
Zustellung zu dem Thema.
-
Die
Software für
zertifizierte Zustellung übermittelt
eine ANMELDUNGSANFORDERUNGS-Hinweismeldung an die Absendersitzung
und informiert sie über
den neu angemeldeten Mithörer.
-
Wenn
die Software für
zertifizierte Zustellung in dem Mithörprogramm die Entgegennahmeantwort empfängt, so übermittelt
sie eine ANMELDUNG-ZERTIFIZIERT-Hinweismeldung an die Mithörersitzung.
-
Vereinbarung über die
zertifizierte Zustellung
-
Nach
der Anmeldung und Entgegennahme haben der Absender und der Mithörer eine
Vereinbarung über
die zertifizierten Zustellung zu dem Thema.
-
Der
Absender ist dafür
zuständig,
jede abgehende Nachricht zu dem Thema aufzuzeichnen und die Nachricht
in seinem Register aufzubewahren, bis er eine Zustellbestätigung von
dem Mithörer
empfängt
(oder bis die Zeitbegrenzung der Nachricht abläuft).
-
Umgekehrt
ist der Mithörer
dafür zuständig, die
Zustellung jeder Nachricht zu bestätigen und eine Übertragungswiederholung
anzufordern, wenn eine Nachricht außerhalb der Reihenfolge eintrifft.
-
Das
System arrangiert diese gesamte Abwicklung automatisch. Die Sende-
und Mithörprogramme nehmen
nicht direkt an diesen Protokollen, sondern nur indirekt, durch
Senden und Mithören
mit Bibliotheksrufen für
eine zertifizierte Zustellung teil.
-
Es
ist zu beachten, dass eine Vereinbarung über eine zertifizierte Zustellung
nur in einer einzigen Richtung gilt: von einem Absender zu einem
Mithörer.
Eine Dialogkonfiguration erfordert zwei separate Vereinbarungen über eine
zertifizierte Zustellung.
-
Wir
bezeichnen die zwei Partner einer Vereinbarung über eine zertifizierte Zustellung
als einen zertifizierten Absender und einen zertifizierten Mithörer, und
die markierten Nachrichten, die zwischen ihnen übermittelt werden, sind zertifizierte
Nachrichten. Es ist der feine Unterschied in der Terminologie zu
beachten: Vor dem Herstellen einer Vereinbarung über eine zertifizierte Zustellung
sind die Partner Zustellverfolgungsabsender und -mithörer; danach
sind sie zertifizierte Absender und Mithörer. Eine markierte Nachricht
ist nur eine zertifizierte Nachricht, wenn der Absender und der
Empfänger
eine Vereinbarung über
eine zertifizierte Zustellung aufrecht erhalten.
-
ZUSTELLEN
EINER ZERTIFIZIERTEN NACHRICHT
-
Sobald
eine Zustellvereinbarung existiert, sind alle anschließenden Nachrichten
zu dem Thema (von dem zertifizierten Absender an den zertifizierten
Mithörer)
zertifizierte Nachrichten. Jede zertifizierte Nachricht erzeugt
eine Reihe von Protokollereignissen:
Wenn das System eine zertifizierte
Nachricht an die Mithörerrückruffunktion übermittelt,
so enthält
sie die Folgenummer, die ihr (automatisch) durch die Sendesoftware
zugewiesen wurde, und den Namen des Herausgebers.
-
Wenn
die Rückruffunktion
antwortet, so bestätigt
die Software für
zertifizierte Zustellung automatisch die Zustellung an den Absender
und zeichnet die Bestätigung
in einem Register auf. (Programme können dieses Verhalten außer Kraft
setzen und die Zustellung ausdrücklich
bestätigen.)
-
Wenn
die Bestätigung
das Absendeprogramm erreicht, so verzeichnet die Software für zertifizierte
Zustellung die Zustellung im Register des Absenders und übermittelt
eine ZUSTELLBESTÄTIGUNGS-Hinweismeldung
an die Absendersitzung.
-
Wenn
die Bestätigung
von jedem zertifizierten Mithörer
für diese
Nachricht eingetroffen ist, so löscht die
Software für
zertifizierte Zustellung die Nachricht aus dem Register des Absenders
und übermittelt
eine ZUSTELLUNG-VOLLENDET-Hinweismeldung
an die Absendersitzung.
-
Automatische Zustellbestätigung
-
Das
als Standard voreingestellte Verhalten von zertifizierten Mithörern ist,
automatisch die Nachrichtenzustellung nach der Antwort von der Datenrückruffunktion
zu bestätigen.
Programme können
dieses Verhalten für
bestimmte Mithör-Endpunkte
selektiv außer
Kraft setzen (ohne dass sich dies auf andere Mithör-Endpunkte
auswirkt).
-
Durch
die Außerkraftsetzung
der automatischen Bestätigung übernimmt
der Mithörer
die Zuständigkeit für die ausdrückliche
Bestätigung
jeder ankommenden zertifizierten Nachricht.
-
Eine
Außerkraftsetzung
der automatischen Bestätigung
ist in Betracht zu ziehen, wenn die Verarbeitung ankommender Nachrichten
eine asynchrone Aktivität
beinhaltet, wie zum Beispiel Berechnungen in anderen Befehlsfolgen,
Datenbankabfragen oder zusätzliche
Netzwerkkommunikation.
-
Anfordern
einer Bestätigung
-
Wenn
ein zertifizierter Absender keine prompte Zustellbestätigung von
einem zertifizierten Mithörer bekommt
(zum Beispiel wegen Netzwerkstörungen),
so fordert das System in dem Absendeprogramm automatisch eine Bestätigung an.
Nach jeder Anforderung übermittelt
er eine KEINE.REAKTION.AUF_ZUSTELLUNG-Hinweismeldung an die Sendesitzung.
-
Wenn
ein Mithörer
eine Bestätigungsanforderung
empfängt,
so prüft
er sein Register und bestätigt
erneut den Empfang der Nachrichten, die er bereits bestätigt hat.
(Dieses Verhalten ist unabhängig
davon identisch, ob das Programm eine automatische Bestätigung verwendet
oder sie außer
Kraft setzt.)
-
SEQUENZIERUNG UND ÜBERTRAGUNGSWIEDERHOLUNG
-
Ein
Zustellverfolgungsabsender weist Folgenummern seriell für jedes
abgehende Thema zu, so dass die Folgenummern die Reihenfolge von
Nachrichten von einem Absender zu einem bestimmten Thema widerspiegeln.
-
Wenn
die Software für
zertifizierte Zustellung zertifizierte Nachrichten an einen zertifizierten
Mithörer übermittelt,
so behält
sie die Reihenfolge bei, in der der Absender sie gesendet hat. Wenn
eine Nachricht außerhalb
der Reihenfolge eintrifft, so übermittelt
die Software für
zertifizierte Zustellung in dem Mithörer sie erst an die Rückruffunktion,
wenn alle vorangegangenen Nachrichten verfügbar sind.
-
Zum
Beispiel empfängt
ein zertifizierter Mithörer
die zertifizierte Zustellung für
das Thema FOO von einem Absender namens BAZ. Nach dem Empfangen
und Übermitteln
der Nachricht Nummer 32 ist die nächste Nachricht, die eintreffen
soll, die Nachricht 35. Die Software für zertifizierte Zustellung
speichert die Nachricht 35, bis sie zuerst die Nachrichten 33 und
34 übermitteln
kann.
-
Die
Software für
zertifizierte Zustellung in FOO fordert nun eine Übertragungswiederholung
für die Nachrichten
33 und 34 von Baz an. In einem Fall, wo die Zeitbegrenzung für jene Nachrichten
abgelaufen ist, so dass BAZ sie nicht mehr in seinem Register hat, übermittelt
die Software für
zertifizierte Zustellung eine ZUSTELLUNG.NICHT.MÖGLICH-Hinweismeldung an den Mithörer, was
anzeigt, dass die Nachrichten 33 und 34 nicht mehr zur Verfügung stehen.
Dann übermittelt
sie die Nachricht 35 an die Datenrückruffunktion.
-
DAUERHAFTE
KORRESPONDENTEN
-
Wir
haben das Konzept der dauerhaften Korresponden ten im Kapitel "Name", Seite 144, vorgestellt. Ein
wiederverwendbarer Name und ein dateibasiertes Register gestatten
es einem dauerhaften Korrespondenten, die zertifizierte Zustellung über die
Beendigung und den Neustart einer Sitzung oder eines Prozesses hinaus
fortzuführen.
-
Beispiel
-
Stellen
wir uns ein beispielhaftes Anwendungssystem vor, in dem ein Anwendungsprogramm
JOE wichtige Informationen erzeugt und sie an das Anwendungsprogramm
SUE in zertifizierten Nachrichten zu dem Thema DENK.DARAN sendet.
Bei Empfang speichert SUE die Informationen in einer Datenbank.
-
Wenn
entweder JOE oder SUE unerwartet abbrechen, so ist es von entscheidender
Bedeutung, dass zertifizierte Nachrichten nach wie vor eintreffen,
um sie in die Datenbank einzuschreiben. Um dieses Ergebnis zu gewährleisten,
müssen
beide Programme dauerhafte Korrespondenten darstellen; das heißt, beide
Programme ermöglichen
Sitzungen mit wiederverwendbaren Namen (JOE_PC und SUE_PC), und
jedes Programm führt
ein dateibasiertes Register. Darüber
hinaus benötigt
SUE alte Nachrichten, wenn sie die Sitzung SUE_PC aktiviert.
-
Während des
Betriebes hat JOE die Nachricht Nummer 57 zu dem Thema DENK.DARAN
gesendet, aber er hat noch keine Zustellbestätigung für die Nachrichten 53–56 empfangen.
SUE verarbeitet gerade die Nachricht 53, als ein plötzlicher
Hardware-Ausfall einen Abbruch verursacht. Inzwischen setzt JOE
das Senden der Nachrichten 58–77
fort.
-
Der
Computer startet neu, und SUE startet neu. Die Registerdatei für SUE_PC
zeigt an, dass die Nachricht 52 für das Thema DENK.DARAN für einen
bestimmten Herausgeber als JOE_PC empfangen und bestätigt wurde.
Beim Neustart kontaktiert SUE_PC JOE_PC und stellt ihre Vereinbarung über eine
zertifizierte Zustellung wieder her. Wenn JOE akzeptiert, so sendet
JOE_PC die gespeicherten Nachrichten 53–77 zu diesem Thema erneut.
-
In
dem obigen Szenario ist es wichtig, das Folgende zu beachten:
Dass
SUE keine DENK.DARAN-Nachrichten verpasst. Jedoch muss die neue
SUE kulanterweise sämtliche Probleme
lösen,
die durch die teilweise Verarbeitung von Nachricht 53 durch die
alte SUE verursacht wurden.
-
JOE
und SUE kommunizieren unter Verwendung eines rundgesendeten Themennamens,
der kein Posteingangsfach ist. Posteingangsfachnamen sind einmalig;
sie können
also nicht über
eine Sitzungsbeendigung und einen Neustart hinaus fortbestehen.
-
ERWARTEN EINES
MITHÖRERS
-
In
einigen Situationen kann ein Zustellverfolgungsabsender die Anforderung
für eine
zertifizierte Zustellung von einem dauerhaften Korrespondenten,
der noch nicht das Mithören
begonnen hat, erwarten.
-
Stellen
wir uns ein Beispiel vor, bei dem ein Datenbankprogramm (DB) alle
Nachrichten mit dem Thema SPEICHERE.DAS aufzeichnet. Das Programm
DB aktiviert eine Sitzung, die einen dauerhaften Korrespondenten
namens DB_PC instanziiert. Alle Programme, die Nachrichten mit dem
Thema SPEICHERE.DAS senden, hängen
von diesem Speichermechanismus ab.
-
Ein
solches Absendeprogramm ist JAN. Wann immer JAN startet, kann er
erwarten, dass DB_PC die zertifizierte Zustellung des Themas SPEICHERE_DAS
anfordert. Nehmen wir an, dass JAN startet, aber DB nicht läuft oder
eine Netz werktrennung JAN von DB isoliert hat. In der Erwartung,
dass er schließlich
eine Anmeldungsanforderung für
SPEICHERE.DAS von DB_PC empfangen wird, gibt JAN einen Mithörerhinzufügungsruf
aus. Das führt
dazu, dass sich die Software innerhalb von JAN so verhält, als
wenn sie eine Vereinbarung über
eine zertifizierte Zustellung mit DB_PC für das Thema SPEICHERE.DAS hätte. Sie
speichert abgehende Nachrichten (zu dem Thema) in ihrem Register.
Wenn DB neu startet oder das Netzwerk wieder die Verbindung aufnimmt,
so sendet JAN automatisch alle gespeicherten Nachrichten erneut
an DB.
-
STORNIEREN
EINER ZERTIFIZIERTEN ZUSTELLUNG
-
Sowohl
Mithörer
als auch Absender können
eine Vereinbarung über
eine zertifizierte Zustellung stornieren.
-
Mithörer stornieren
durch Schließen
des Mithör-Endpunktes unter
Verwendung der nachstehend angeführten
Rufe. Absender mit Vereinbarungen über eine zertifizierte Zustellung
an den geschlossenen Endpunkt empfangen ANMELDUNG.GESCHLOSSEN-Hinweismeldungen.
-
HOST.BEENDET.MITHÖREN-Hinweismeldungen
informieren andere Anwendungen über
die Änderung.
-
Absender
können
die zertifizierte Zustellung eines bestimmten Themas an einen bestimmten
Mithörer stornieren.
Das Absenderprogramm löscht
aus seinem Register alle Informationen über die Zustellung des Themas
an den Mithörer.
Das Absendeprogramm empfängt
eine ANMELDUNG.GESCHLOSSEN-Hinweismeldung.
Wenn der Mithörerkorrespondent
verfügbar
ist (läuft
und erreichbar ist), so empfängt
er eine ANMELDUNG.NICHT_ZERTIFIZIERT-Hinweismeldung. (Im Gegensatz
zu den Mithörer-verbieten-Rufen
in Tabelle 7 veranlassen diese Rufe keine Ablehnung von anschließenden Anmeldungsanforderungen.)
-
VERBIETEN
EINER ZERTIFIZIERTEN ZUSTELLUNG
-
Wie
oben beschrieben, nehmen Absender automatisch alle Anmeldungsanforderungen
entgegen. Das gilt nur dann nicht, wenn das Absendeprogramm ausdrücklich die
zertifizierte Zustellung an eine Mithörsitzung verbietet. Rufe, die
einen Mithörer
verbieten, stornieren bestehende Vereinbarung über eine zertifizierte Zustellung
mit der Mithörersitzung
(zu allen Themen) und veranlassen, dass die Software für zertifizierte
Zustellung automatisch anschließende
Anmeldungsanforderungen von der Mithörersitzung ablehnt.
-
Wenn
ein Absender einen Mithörer
verboten hat, so finden die Ereignisse, die mit der Anmeldung verbunden
sind, nicht statt. Statt dessen benachrichtigt die Software für zertifizierte
Zustellung im Absender die Mithörersitzung,
dass der Anforderung nicht stattgegeben wird. Wenn die Software
für zertifizierte
Zustellung im Mithörprogramm
die Ablehnungsmitteilung empfängt,
so übermittelt
sie eine ANMELDUNG.NICHT_ZERTIFIZIERT-Hinweismeldung an die Mithörsitzung.
-
Mithörer-zulassen-Rufe
heben die Wirkung eines vorherigen Mithörer-verbieten-Rufes auf, wodurch anschließende Anmeldungsanforderungen
von der Mithörersitzung
positiv beschieden werden.
-
KEINE ANTWORT
AUF ANMELDUNGSANFORDERUNGEN
-
Es
ist möglich,
dass eine Anmeldungsanforderung nie den Zustellverfolgungsabsender
erreicht oder dass die Entgegennahmemitteilung nie das Mithörprogramm
erreicht (zum Beispiel wegen Netzwerkstörungen oder Beendigung des
Absendeprogramms). Nach wiederholten Versuchen einer Anmeldung ohne
Antwort vom Absender übermittelt
die Software für
zertifizierte Zustellung im Mithörprogramm
eine ANMELDUNG.KEINE_ANTWORT-Hinweismeldung an die Mithörsitzung.
Nach mehreren Versuchen einer Anmeldung ohne Antwort hört der Mithörer auf,
Anforderungen zu senden.
-
WIEDERVERWENDBARE
NAMEN
-
Sitzungen,
die dauerhafte Korrespondenten darstellen, brauchen wiederverwendbare
Namen. Wiederverwendbare Namen müssen
der Syntax für
Themennamen gehorchen. Wiederverwendbare Namen dürfen keine "Joker"-Zeichen enthalten. Wiederverwendbare
Namen dürfen
nicht mit reservierten Elementen beginnen (wie zum Beispiel _INBOX,
_RV oder _LOCAL). Im Interesse einer größtmöglichen Leistung sollten wiederverwendbare
Namen kurz gehalten werden: nur einige wenige Zeichen, in der Regel
nicht mehr als drei oder vier Elemente, und nicht mehr als 50 Zeichen
insgesamt.
-
REGISTERSPEICHERMODUS
-
Jede
Zustellverfolgungssitzung zeichnet Informationen in einem Register
auf, das Speicherplatz innerhalb des Anwendungsprozesses beansprucht.
Eine Sitzung, die einen dauerhaften Korrespondenten darstellt, muss
ebenfalls eine Kopie des Registers in einer Datei führen. Das
dateibasierte Register bewahrt Informationen über eine zertifizierte Zustellung über die
Beendigung und den Neustart einer Sitzung (oder eines Prozesses)
hinaus.
-
Dieses
Leistungsmerkmal ist mit zwei Nachteilen erkauft:
Die Registerdatei
verbraucht Festplattenspeicher.
-
Das
Anwendungsprogramm setzt die Aktualisierung der Registerdatei bei
jedem bedeutsamen Ereignis aus.
-
Übergangskorrespondenten
können
sich diese Nachteile ersparen, weil sie nicht mit Registerdateien arbeiten.
Das Führen
des Registers in prozessbasiertem Speicher verbraucht allerdings
Prozessspeicher.
-
Registergröße
-
Die
Größe des Registers
hängt von
mehreren Faktoren ab. Der wichtigste davon ist die Aufbewahrungsrate
von gespeicherten Daten. Das heißt, das Register wächst am
schnellsten in Reaktion auf die kumulative Länge von unvollständigen zugestellten
Nachrichten.
-
Programmentwickler
können
die erwartete Größe des Registers
schätzen
und müssen
gewährleisten, dass
der Prozess genügend
Speicher zuweisen kann, um es aufzunehmen. Für ein dateibasiertes Register
ist zu gewährleisten,
dass auch genügend
Festplattenspeicher zur Verfügung
steht, da sich der Speicherbedarf für die Prozessanwendung ändert, wenn
mit einem dateibasierten Register gearbeitet wird.
-
EREIGNISVERWALTER
-
Die
zertifizierte Zustellung des Systems hängt von dem Ereignisverwalter
für Zeitsteuerungs-
und E/A-Ereignisse ab. Wenn eine Anwendung eine Zustellverfolgungssitzung
aktiviert, so muss diese Sitzung eine ereignisverwaltete Sitzung
sein.
-
Keine synchronen
Sitzungen
-
Synchrone
Sitzungen sind für
Rufe für
eine zertifizierte Zustellung nicht gültig, und alle Zustellverfolgungssitzungen
müssen
asynchrone, ereignisverwaltete Sitzungen sein.
-
Verteilte Warteschlangen
-
Das
System ermöglicht
auch die Verwendung von verteilten Warteschlangen für zertifizierte "eine-von-n"-Zustellungen. Genauer gesagt, sieht
das System die verteilte Warteschlangeneinreihung von Nachrichten
zusammen mit einer zertifizierten garantierten Zustellung in einem "eine-von-n"-Zustellungsmechanismus
vor.
-
Dieser
Zustellungsmechanismus ist in 2 veranschaulicht,
wo ein einzelner Herausgeber 202 Nachrichten an drei angemeldete
Abonnenten 204, 206 bzw. 208 ausgibt.
Einer der Abonnenten, 206, ist eine große Gruppe von n Abonnenten.
-
Eine
verteilte Warteschlangeneinreihung löst das Problem, dass es unerwünscht ist,
dass alle n Abonnenten in dem angemeldeten Abonnenten 206 jede
Nachricht erhalten, die durch den Herausgeber 202 herausgegeben
wird. Zum Beispiel kann es unerwünscht
sein, weil jeder der n Abonnenten in der Gruppe 206 eine
Aktion unternimmt. Außerdem
kostet es zusätzliche
Netzwerkbandbreite, wenn jeder Abonnent die Nachricht empfangen
soll (und eventuell auch noch darauf antworten soll).
-
Ungeachtet
dessen ist es unabdingbar (darum die Notwendigkeit einer zertifizierten/garantierten
Zustellung), dass wenigstens einer der n Abonnenten in der Gruppe 206 die
Nachricht empfängt.
D. h. idealerweise sollte das System die Nachricht nur an einen
der n Abonnenten 206 zustellen. Zu einer derartigen Situation
kommt es, wenn gefordert wird, dass eine große Anzahl n der Abonnenten 206 das
gewünschte
Maß an Fehlertoleranz
und/oder Lastausgleich erbringt. Fehlertoleranz ist in Situationen
wichtig, wo Anwendungen instabil sein können oder die Nachrichtenzustellung
von absolut entscheidender Bedeutung ist.
-
In
dem System der Erfindung operiert jede Abonnen tenanwendung in der
Gruppe 206 durch Senden von Nachrichten an einen anderen
der n Abonnenten in der Gruppe 206, der als ein Planer
agiert, der einen Hinweis auf sein Gewicht gibt. Der Planer antwortet
dann durch Senden der Nachricht an den speziellen Abonnenten in
der Gruppe mit dem größten Gewicht.
Wie dies bewerkstelligt wird, wird im nun Folgenden näher beschrieben.
-
Dementsprechend
kann eine verteilte Warteschlange aus abonnierenden Datenbankservern 206 zertifizierte
Nachrichten entgegennehmen, die Aufgaben (Aktualisierungen und Abfragen)
darstellen. Das System weist jede Aufgabe genau einem der Server
zu, während
die Gruppe von Servern und die Verteilung von Aufgaben für die Client-Prozesse
vollständig
transparent bleibt.
-
Warteschlangenelemente
-
Die
Elemente-Sitzungen einer verteilten Warteschlange nutzen alle denselben
wiederverwendbaren Korrespondentennamen, was anzeigt, dass sie Elemente
der Warteschlange mit diesem Namen sind. Jedes Element einer verteilten
Warteschlange hört
auf dieselben Themen mit; doch selbst, wenn n Elemente auf jede ankommende
Nachricht (oder Aufgabe) mithören,
verarbeitet nur ein einziges Element die Nachricht.
-
Rollen der
Elemente – Arbeiter
und Planer
-
Im
Sinne des vorliegenden Textes sind – im Zusammenhang mit der Warteschlangeneinreihung
und einer auf Warteschlangeneinreihung basierenden Zustellung – die Begriffe "Mithörer" und "Arbeiter" gegeneinander austauschbar.
Jede verteilte Warteschlangenelemente-Sitzung kann zwei eigenständige Rollen
haben: als ein Arbeiter und als ein potenzieller Planer.
-
In
der Mithörer-
oder Arbeiter-Rolle unterstützen
Warteschlangenelemente-Sitzungen eine begrenzte Teilmenge von Rufen
für eine
zertifizierte Zustellung. Elemente können auf ein Thema mithören, eine
automatische Zustellbestätigung
außer
Kraft setzen und eine Zustellung bestätigen. Warteschlangenelemente-Sitzungen
unterstützen
keine anderen Rufen für
eine zertifizierte Zustellung (insbesondere Rufe, die mit dem Senden zertifizierter
Nachrichten zu tun haben). Sie unterstützen jedoch alle Standardrufe
(zum Beispiel Senden gewöhnlicher
Nachrichten).
-
Das
System enthält
Fehlertoleranzsoftware, die die genau einen aktiven Planer in jeder
Warteschlange führt.
Wenn der Planerprozess abbricht, so übernimmt ein anderes Element
die Rolle des Planers. Die Warteschlangenelemente-Sitzung in der Planer-Rolle
weist ankommende Aufgaben an Mithörer in der Warteschlange zu.
(Ein Planer kann Aufgaben an seiner eigenen Mithörerkomponente zuweisen, tut
dies aber nur, wenn alle anderen Mithörer beschäftigt sind.)
-
Der Planer
als eine fehlertolerante Komponente
-
Obgleich
jedes Warteschlangenelement das Potenzial hat, der Planer zu werden,
führt eine
Fehlertoleranzsoftware stets genau einen einzigen Planer. Fehlertoleranzparameter
leiten die Software an, das geeignetste Element als den Planer auszusuchen.
-
Das
Planergewicht stellt die Fähigkeit
einer Elemente-Sitzung dar, die Rolle des Planers relativ zu anderen
Elementen derselben Warteschlange auszufüllen, d. h. die größte Verfügbarkeit
oder ungenutzte Elemente-Ressourcen. Die Warteschlangenelemente
nutzen relative Planergewichtswerte zum Auswählen eines Elements als den
Planer. Elemente mit höherem
Planergewicht haben Vorrang.
-
Der
aktive Planer sendet Herzschlag-Meldungen in dem durch den Nutzer
spezifizierten Intervall. Herzschlag-Meldungen informieren andere Elemente,
dass ein Element als der Planer agiert. Alle Sitzungen in der Warteschlange
müssen
das gleiche Planer-Herzschlagintervall spezifizieren.
-
Darüber hinaus
müssen
alle Sitzungen in der Warteschlange das gleiche Planer-Aktivierungsintervall spezifizieren.
Wenn das Herzschlagsignal von dem Planer für die Dauer dieses Intervalls
verstummt ist, so nimmt das Warteschlangenelement mit dem größten Planergewicht
dessen Platz als der neue Planer ein.
-
Zuweisen von
Aufgaben an Arbeiter
-
Der
Planer weist jede Aufgabe an einen Arbeiter oder Mithörer zu (eine
weitere Warteschlangenelemente-Sitzung). Dieser Arbeiter oder Mithörer allein
verarbeitet die Aufgabennachricht in einer Datenrückruffunktion.
-
Arbeitergewicht
-
Relative
Arbeiter- oder Mithörergewichte
unterstützen
den Planer bei der Zuweisung von Aufgaben. Wenn der Planer eine
Aufgabe empfängt,
so weist er die Aufgabe dem verfügbaren
Arbeiter oder Mithörer
mit dem größten Arbeiter-
oder Mithörergewicht
zu.
-
Die
Aktivierung einer Sitzung als ein Warteschlangenelement setzt ihren
Arbeiter- oder Mithörergewichtsparameter
stillschweigend auf 1. Das heißt,
alle Elemente haben implizit das gleiche Arbeiter- oder Mithörergewicht,
sofern nicht ein Programmcode ausdrücklich das Arbeiter- oder Mithörergewicht ändert.
-
Verfügbarkeit
-
Wenn
der Planer eine Aufgabe empfängt,
so weist er die Aufgabe dem verfügbaren
Arbeiter/Mithörer mit
dem größten Mithörergewicht
zu.
-
Ein
Arbeiter/Mithörer
wird als verfügbar
betrachtet, sofern nicht eine dieser Bedingungen zutrifft:
Die
anstehenden Aufgaben, die dem Arbeiter oder Mithörer zugewiesen sind, übersteigen
seine Aufgabenkapazität.
-
Die
Arbeiter- oder Mithörersitzung
ist der Planer. (Der Planer weist Aufgaben an seinen eigenen Arbeiter
oder Mithörer
nur zu, wenn alle anderen Arbeiter oder Mithörern beschäftigt sind.)
-
Aufgabenkapazität
-
Die
Aufgabenkapazität
ist die maximale Anzahl von Aufgaben, die ein Arbeiter oder Mithörer entgegennehmen
kann. Wenn die Anzahl der entgegengenommenen Aufgaben dieses Maximum
erreicht, so kann der Arbeiter oder Mithörer erst dann weitere Aufgaben
entgegennehmen, wenn er eine oder mehrere von ihnen vollendet hat.
-
Wenn
der Planer eine Aufgabe empfängt,
so weist er die Aufgabe dem Arbeiter oder Mithörer mit dem größten Arbeiter-
oder Mithörergewicht
zu, sofern nicht die anstehenden Aufgaben, die dem Arbeiter oder
Mithörer
zugewiesen sind, seine Aufgabenkapazität übersteigen. Wenn der bevorzugte
Arbeiter oder Mithörer
zu viele Aufgaben hat, so weist der Planer die neue ankommende Aufgabe
an den Arbeiter oder Mithörer
mit dem nächst-höheren Arbeiter-
oder Mithörergewicht
zu.
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement setzt ihre
Arbeiter- oder Mithörer-Aufgabenkapazität stillschweigend
auf 1. Die Programmierer können
die Aufgabenkapazität
anhand zweier Faktoren abstimmen:
Multitasking-Programm auf
Mehrprozessor-Hardware.
-
Auf
einem Mehrprozessor-Computer hat ein Mehrpfadprogramm, das n Befehlsfolgen
und n Prozessoren für
ankommende Aufgaben aufwendet, eine Aufgabenkapazität n.
-
Kommunikationsverzögerung.
-
In
den meisten verteilten Warteschlangenanwendungen ist die Kommunikationszeit
ein unbedeutender Bruchteil der Aufgabenumlaufzeit. Das heißt, die
Zeit, die benötigt
wird, um eine Aufgabe zuzuweisen und ihre Vollendung zu signalisieren,
ist sehr gering im Vergleich zu der Zeit, die benötigt wird,
um die Aufgabe selbst zu verarbeiten. Wenn zum Beispiel die durchschnittliche
Aufgabenumlaufzeit 2000 Millisekunden beträgt, wovon die Kommunikationszeit
insgesamt nur 10 Millisekunden ausmacht, dann ist die Aufgabenkapazität die gleiche
wie die Anzahl von Prozessoren oder Befehlsfolgen.
-
Jedoch
kann in einigen Situationen die Kommunikationszeit beträchtlich
sein; zum Beispiel, wenn die Warteschlangenelemente an entfernten
Standorten verteilt sind, die durch ein WAN miteinander verbunden sind.
Wenn die Kommunikationszeit beträchtlich
ist, so ändert
sich die Bedeutung von "Aufgabenkapazität". Anstatt die Anzahl
der Aufgaben zu bezeichnen, die ein Mithörer gleichzeitig verarbeiten
kann, bezeichnet sie die Anzahl der Aufgaben, welche die Kapazität des Mithörers trotz
der Kommunikationsverzögerung
ausfüllen kann.
-
Wenn
zum Beispiel die durchschnittliche Aufgabenumlaufzeit 1500 Millisekunden
beträgt,
wovon die durchschnittliche Aufgabenverarbeitungszeit insgesamt
1000 Millisekunden ausmacht, dann minimiert das Setzen der Aufgabenkapazität auf 3
die Leerlaufzeit des Mithörers
zwischen den Aufgaben.
-
Beim
Abstimmen der Aufgabenkapazität
zum Kompensieren der Kommunikationsverzögerung ist die Balance von
entscheidender Bedeutung. Ein Unterlasten eines Mithörers (indem
seine Aufgabenkapazität
zu niedrig angesetzt wird) kann dazu führen, dass der Mithörer im Leerlauf
bleibt, während
er darauf wartet, dass der Planer seine nächste Aufgabe zuweist. Umgekehrt
kann ein Überlasten
eines Mithörers
(indem seine Aufgabenkapazität
zu hoch angesetzt wird) dazu führen,
dass einige zugewiesene Aufgaben warten müssen, während andere Mithörer, die
jene Aufgaben hätten
entgegennehmen können,
im Leerlauf bleiben.
-
Aufgabenplanung
-
In
einer weiteren Anwendung dieser Erfindung können die weitgefassten Konzepte
der verteilten Warteschlangeneinreihung auf Planungsaufgaben für verschiedene
aufgabenausführende
Anwendungen angewendet werden. In dieser Anwendung kann eine Anwendung
entweder ein Planer oder ein Arbeiter oder beides sein. Jedem Arbeiter
wird ein Gewicht zugewiesen, das seine Fähigkeit anzeigt, Arbeit zu
verrichten; in der Regel die Anzahl von Aufgaben, die er gleichzeitig
ausführen
kann. In der Regel weisen sich Arbeiter ihre eigenen Gewichte zu.
-
Eine
Anwendung oder ein Element einer Gruppe wird zum Planer. Sobald
das geschieht, werden alle anderen Anwendungen nur noch zu ausdrücklichen
Arbeitern. Der Planer wird sowohl zu einem Arbeiter als auch zum
Planer.
-
Wenn
eine Aufgabe durch die Gruppe (den Planer) empfangen wird, so weist
sie die Aufgabe an den Arbeiter mit dem höchsten "Gewicht" oder der größten Fähigkeit, Aufgaben auszuführen, zu.
Der Arbeiter ruft dann beim Planer zurück und nimmt die Aufgabe an
und sendet bei Vollendung an den Planer einen Ruf zurück, der
diese Tatsache anzeigt. In bestimmten Fällen enthält der Rückruf an den Planer sowohl
eine Entgegennahme als auch eine Mitteilung zur Aufgabenvollendung.
-
Es
sind zwei Anhänge,
A und B, angehängt.
Diese Anhänge
enthalten detaillierte C-Codierungsinformationen für eine zertifizierte
Nachrichtenübermittlung
bzw. für
eine Nachrichten-Warteschlangeneinreihung.
-
Anhang A: Zertifizierte
Nachrichtenzustellung (Programmierungsdetails für C-Programmierer)
-
Wie
zuvor angesprochen, sind zwar einige Kommunikationen überaus zuverlässig; trotzdem
erfordern bestimmte Anwendungen eine noch stärkere Zustellungsgewissheit.
Eine zertifizierte Zustellung bietet eine größere Zustellungsgewissheit
selbst in Situationen, wo Prozesse und ihre Netzwerkverbindungen
instabil sind.
-
Dieser
Anhang A enthält
Programmierungsdetails für
C-Programmierer, die eine zertifizierte Nachrichtenzustellung implementieren
wollen. Der Anhang gibt in Tabelle A1 eine zusammenfassende Übersicht über Datenarten
und Funktionen einer zertifizierten Nachrichtenzustellung. Jede
Datenart oder Funktion wird dann eingehender mit Querverweisen zu
verwandten Datenarten oder Funktionen beschrieben.
-
Zertifizierte
Nachrichtenzustellung CAPI
-
Die
folgende Tabelle fasst die Datenarten und Funk tionen in der zertifizierten
Nachrichtenzustellung CAPI zusammen. Tabelle
A1: Zertifizierte Nachrichtenzustellung: Datenarten und Funktionen
Deklaration
-
Zweck
-
- Aktivieren einer bestehenden Sitzung für eine Zustellverfolgung.
-
Anmerkungen
-
Alle
anderen rvcm-Funktionen erfordern eine aktivierte Sitzung als ein
Argument. Programme müssen vor
allen anderen Rufen, die mit einer zertifizierten Zustellung zu
tun haben, rvcm_Enable () rufen.
-
Ein
Nutzer kann eine aktivierte Sitzung sowohl für zertifizierte als auch nicht-zertifizierte
Kommunikation nutzen. Zum Beispiel unterstützt eine aktivierte Sitzung
Rufen an rvcm_Send () und rv_Send ().
-
Sobald
eine Sitzung für
eine zertifizierte Zustellung aktiviert ist, bleibt sie aktiviert,
bis sie mit rv_Term () beendet wird. Der Nutzer kann nicht im Nachhinein
die Parameter für
die zertifizierte Zustellung der Sitzung ändern.
-
Namen
-
rvcm_Enable
() befördert
sein Sitzungsargument zu einer Zustellverfolgungssitzung.
-
Wenn
der Name NULL ist, dann erzeugt rvcm_Enable () einen einmaligen,
nicht-wiederverwendbaren Namen für
diese Sitzung.
-
Wenn
der Namen nicht NULL ist, dann bindet die Sitzung diesen Namen.
Ein Korrespondent kann über die
Sitzungsbeendigung hinaus nur dann fortbestehen, wenn er sowohl
einen wiederverwendbaren Namen als auch ein dateibasiertes Register
hat.
-
Registerdatei
-
Jede
Zustellverfolgungssitzung speichert den Zustand ihrer zertifizierten
Kommunikation in einem Register, das in einem prozessbezogenen Speicher
gespeichert wird.
-
Wenn
LedgerFile NULL ist, dann verwendet diese Sitzung nur ein prozessbasiertes
Register. Wenn die Sitzung oder der Prozess abbricht, so gehen alle
Informationen in dem Register verloren.
-
Wenn
LedgerFile einen gültigen
Dateinamen spezifiziert, dann verwendet diese Sitzung diese Datei zur
Registerspeicherung. Wenn die Sitzung oder der Prozess mit unvollständiger zertifizierter
Kommunikation abbricht, so zeichnet die Registerdatei diesen Zustand
auf. Wenn eine neue Sitzung den gleichen wiederverwendbaren Namen
bindet, so liest sie die Registerdatei und setzt die zertifizierte
Kommunikation ab dem Zustand fort, der in der Datei gespeichert
ist.
-
Selbst
wenn eine Sitzung eine Registerdatei verwendet, kann sie im Interesse
einer höheren
Effizienz mitunter Teile des Registers in prozessbasiertem Speicher
replizieren. Die Programmierer können
sich aber nicht auf diese Replikation verlassen.
-
Wenn
das Betriebssystem Rohspeichervorrichtungen (auch Rohpartitionen
genannt) unterstützt,
so kann der Nutzer eine solche Speichervorrichtung als die Registerdatei
spezifizieren.
-
Ein
optionales Präfix
bestimmt, ob das Schreiben in die Registerdatei eine synchrone Operation
ist:
- – Um
ein synchrones Schreiben zu spezifizieren (der voreingestellte Standard),
wird entweder ein gewöhnlicher
Dateiname übermittelt,
oder es wird die Zeichenkette sync* vor den Dateinamen gehängt; zum
Beispiel "myLedger" (implizit) oder "sync*/local/myLedger" (explizit). Jedes
Mal, wenn eine Registerposition geschrieben wird, gibt der Ruf erst
eine Rückmeldung,
wenn die Daten sicher im Dateisystem gespeichert sind.
- – Um
ein asynchrones Schreiben zu spezifizieren, wird die Zeichenkette
nosync* vor den Dateinamen gehängt;
zum Beispiel "nosync*/local/myLedger". Es kann sein, dass
die Registerdatei in Fällen
von Hardware- oder Betriebssystemkernelstörungen den Programmzustand
nicht genau widerspiegelt.
-
Ein
Programm, das eine asynchrone Registerdatei verwendet, kann sie
explizit synchronisieren, indem sie rvcm_SyncLedgerFile() ruft,
wie unten beschrieben.
Parameter
Codierungsbeispiel
Deklaration
-
Zweck
-
Beginnen
des Mithörens
auf Nachrichten, die mit dem Thema übereinstimmen, und Anfordern
einer zertifizierten Zustellung, wann immer sie verfügbar ist.
Wann immer eine Nachricht eintrifft, empfängt die Rückruffunktion sie.
-
Anmerkungen
-
Dieses
Funktion ist parallel to rv_ListenSubject (); sie erstellt einen
Endpunkt zum Empfangen von Nachrichten mit übereinstimmenden Themen. Der
Endpunkt empfängt
sowohl markierte Nachrichten als auch gewöhnliche Nachrichten.
-
Wenn
eine markierte Nachricht von einer unbekannten Zustellverfolgungssitzung
eintrifft, so fordert die Empfangssitzung eine zertifizierte Zustellung
für das
Thema an. Wenn die Sendesitzung die Anforderung akzeptiert, dann
kooperieren die zwei Sitzungen, um die Zustellung von anschließenden Nachrichten
mit diesem Thema zu zertifizieren.
-
Im
Gegensatz zu gewöhnlichen
Mithör-Endpunkten
kann der Nutzer nicht mehr als einen einzigen Zustellverfolgungsmithör-Endpunkt
je Thema verwalten. Wenn ein Endpunkt bereits geöffnet ist, so melden anschließende Rufe
an rvcm_ListenSubject() mit demselben Thema einen Fehler zurück. (Diese
Einschränkung gilt
für jede
Zustellverfolgungssitzung; jedoch kann ein Programm mit mehreren
Zustellverfolgungssitzungen unabhängige Zustellverfolgungsmithörer mit
identischen Themen öffnen.)
-
Im
Gegensatz zu rv_ListenSubject() kann der Nutzer nicht rvcm_ListenSubject()
verwenden, um auf "Joker"-Themen mitzuhören.
-
Die
Software bestätigt
automatisch eine Nachrichtenzustellung, wenn die Datenrückruffunktion
eine Rückmeldung
gibt. Parameter
Codierungsbeispiel
-
Zweck
-
Öffnen eines
Posteingangsfachs und Beginnen des Mithörens auf Punkt-zu-Punkt-Nachrichten,
die dorthin adressiert sind. Es wird eine zertifizierte Zustellung
verlangt, wann immer sie verfügbar
ist. Wann immer eine Nachricht eintrifft, wird sie an die Rückruffunktion
weitergeleitet.
-
Anmerkungen
-
Dieses
Funktion ist parallel zu rv_ListenInbox (); sie erstellt ein Posteingangsfach
zum Empfangen von Punkt-zu-Punkt-Nachrichten.
Das Posteingangsfach empfängt
sowohl markierte Nachrichten als auch gewöhnliche Nachrichten.
-
Wenn
eine markierte Nachricht von einer unbekannten Zustellverfolgungssitzung
eintrifft, so fordert die Empfangssitzung eine zertifizierte Zustellung
für den
Posteingangsfachnamen an. Wenn die Sendesitzung die Anforderung
akzeptiert, dann kooperieren die zwei Sitzungen, um die Zustellung
von anschließenden
Nachrichten zu diesem Posteingangsfach zu zertifizieren.
-
Eine
zertifizierte Zustellung an ein Posteingangsfach ist auf die Dauer
des Posteingangsfachs begrenzt. Sobald der Nutzer ein Posteingangsfach
schließt
oder seine Sitzung beendet, werden das Posteingangsfach und sein
Name hinfällig;
der Nutzer kann niemals ein anderes Posteingangsfach mit dem gleichen Namen
eröffnen.
Da das System niemals eine Zustellung von Nachrichten ausführen kann,
die an ein hinfälliges
Posteingangsfach adressiert sind, löscht es gespeicherte Nachrichten
automatisch, wenn es feststellt, dass ein Posteingangsfach hinfällig geworden
ist.
-
Das
System bestätigt
automatisch eine Nachrichtenzustellung, wenn die Datenrückruffunktion
eine Rückmeldung
gibt. Parameter
Fehler
Codierungsbeispiel
Deklaration
-
Zweck
-
rvcm_Callback
ist der Funktionstyp von Datenrückruffunktionen
für Zustellverfolgungsmithörer. Anwendungen definieren
Funktionen dieses Typs zum Empfangen ankommender Nachrichten und
ergreifen entsprechende Maßnahmen.
-
Anmerkungen
-
Dieser
Funktionstyp ist parallel zu rv_Callback. Es ist zu beachten, dass
seine Funktionssignatur zwei zusätzliche
Parameter – senderName
und sequenceNum – enthält, um die
Verfolgungsdaten zu empfangen, welche die ankommende Nachricht markieren.
Anwendungsprogramme können
diese Argumente zum Testen und Prüfen verwenden.
-
Das
System bestätigt
automatisch die Nachrichtenzustellung, wenn die Datenrückruffunktion
eine Rückmeldung
gibt.
-
Der
Nutzer kann mehrere Rückruffunktionen
schreiben, um die verschiedenen Arten von Nachrichten zu verarbeiten,
welche die Anwendung zu empfangen erwartet. Der Nutzer kann die
gleiche Rückruffunktion verwenden,
um Nachrichten an mehreren Endpunkten zu verarbeiten. Rückruffunktionen
können
jegliche Maßnahmen
bei der Verarbeitung einer Nachricht ergreifen, mit Ausnahme der
folgenden Einschränkungen:
- – Rückruffunktionen
dürfen
nicht versuchen, die Daten (die Werte der Parameter msg, subject,
reillyName und senderName) in irgend einer Weise zu modifizieren.
Die Rückruffunktion
empfängt
Daten durch Zeiger; die eigentlichen Daten liegen in einem Speicher,
der nicht zu der Anwendung gehört.
Die Datenzeiger bleiben nur so lange gültig, bis die Rückruffunktion
eine Rückmeldung
gibt.
- – Die
Datenrückruffunktionen
müssen
unverzüglich
eine Rückmeldung
geben.
Parameter
-
Codierungsbeispiel
-
Dieser
Beispielcode veranschaulicht eine Datenrückruffunktion zum Empfangen
von Nachrichten mit zertifizierter Zustellung.
-
Deklaration
-
- typedef void* rvcm_ListenId;
-
Zweck
-
Die
rvcm_ListenSubject ()- und rvcm_ListenInbox ()- Funktionen melden einen Bezeichner
des Typs rvcm_Listenid zurück.
Um das Mithören
auf die entsprechenden Informationen zu stoppen, wird dieser Bezeichner
an rvcm_Close () weitergeleitet.
-
Anmerkungen
-
Eine
rvcm_Listenid hat keine Bedeutung außerhalb der Sitzung, in der
sie erstellt wurde. Jede rvcm_Listenid ist ein einmaliger Bezeichner,
der eine Zuordnung zwischen einem Thema und einer Rückruffunktion
darstellt. Die rvcm_Listenid ist nur innerhalb des lokalen Programms,
das sie von einer der Mithörfunktionen
empfängt,
zu verwenden und ist als verdeckt zu behandeln.
rvcm_Seq
Datenart
-
Deklaration
-
- typsdef unsigned long rvcm_Seq;
-
Zweck
-
- Folgenummer einer markierten Nachricht.
-
Anmerkungen
-
Folgenummern
sind auf allen Plattformen (selbst auf Plattformen, die ganze 64-Bit-Zahlen
unterstützen)
auf 32 Bits begrenzt.
rvcm_Close ()
Funktion Deklaration
-
Zweck
-
- Schließen
eines Zustellverfolgungs-Endpunkts; Beenden des Mithörens auf
Nachrichten auf ihm.
-
Anmerkungen
-
Diese
Funktion ist parallel zu rv_Close ().
-
Kooperierende
Absender empfangen eine ANMELDUNG.GESCHLOSSEN-Hinweismeldung, was
anzeigt, dass die Zustellverfolgungsvereinbarung nicht mehr in Kraft
ist. Absender empfangen eine ZUSTELLUNG.GESCHEITERT-Hinweismeldung
für jede
nicht-zugestellte Nachricht an den geschlossenen Endpunkt, und das
System entfernt nicht zugestellte Nachrichten aus dem Register des
Absenders.
-
Das
System löscht
die Positionen, die dem geschlossenen Thema entsprechen, aus dem
Register des Mithörers.
-
Wenn
rvcm_Close () einen Endpunkt schließt, so erzeugt er eine HOST.BEENDET.MITHÖREN-Hinweismeldung,
um andere Anwendungen darüber
zu informieren, dass diese Anwendung aufgehört hat, auf das Thema mitzuhören.
-
Er
ist wichtig, dass ein dauerhafter Mithörer einen Zustellverfolgungs-Endpunkt
schließt,
wenn er keine zertifizierte Zustellung des entsprechenden Themas
mehr benötigt – und nur
dann. Offene Endpunkte veranlassen zertifizierte Absender, Nachrichten
in dem Register zu speichern, während
sie auf eine Zustellbestätigung
von dem Absender warten. Aus der Sicht des Absenders erscheint ein
dauerhafter Mithörer,
der sich ausklinkt, ohne seine Mithör-Endpunkte zu schließen, wie
ein Mithörer,
der abnormal abbricht. Der Absender speichert weiterhin Nachrichten
und wartet auf die Rückmeldung
des Mithörerprozesses.
Sobald ein Endpunkt geschlossen ist, speichern die Absender keine
zertifizierten Nachrichten für
diesen Mithörer,
und nachfolgende Mithörerprozesse
mit dem gleichen Korrespondentennamen empfangen keine zertifizierte
Zustellung von Nachrichten, die in der Zwischenzeit gesendet wurden.
-
Codierungsbeispiel
-
Endpunkte
werden geschlossen, wenn die Anwendung das Empfangen von Daten beendet
hat. Das Schließen
von Endpunkten veranlasst TiB/Rendezvous-Software, die zugehörigen Speicherressourcen
wiederzuverwenden. Nach dem Schließen eines Endpunktes werden
alle Verweise auf ihn gelöscht,
um zu verhindern, dass er zweimal geschlossen wird.
-
Es
ist ein Regelverstoß,
denselben Endpunkt mehr als einmal zu schließen. Auf einigen Plattformen ist
der Fehler RVCM_ERR_NONEXISTENT_ID die Folge; auf andere Plattformen
kann das Ergebnis ein Totalausfall sein (weil sie auf dynamisch
zugewiesenen Speicher verweist, der freigegeben wurde).
-
Dieses
Codefragment veranschaulicht das empfohlene Idiom zum Schließen von
Endpunkten:
Parameter
Fehler
Deklaration
-
Zweck
-
- Senden einer markierten Nachricht und Verfolgen der Zustellung
an kooperierende Mithörer.
-
Anmerkungen
-
Diese
Funktion ist parallel zu rv_Send (). Es ist zu beachten, dass ihre
Signatur zwei zusätzliche
Parameter enthält:
timeLimit und SequenceNum.
-
timeLimit
wird zum Spezifizieren der Dauer der Nachricht (in Sekunden) verwendet.
Das System behält
die Nachricht in seinem Register, bis es entweder eine Zustell bestätigung von
allen kooperierenden Mithörern
empfängt
oder die Zeitbegrenzung abläuft.
Wenn die Zeitbegrenzung abläuft,
bevor die Zustellung vollendet ist, so entfernt das System die Nachricht
aus dem Register und erzeugt eine ZUSTELLUNG.GESCHEITERT-Hinweismeldung,
welche die kooperierenden Mithörer
auflistet, welche die Zustellung der Nachricht nicht bestätigt haben.
-
Wir
empfehlen einen timeLimit-Wert von länger als 60 Sekunden, weil
die Domäne
Nachrichten für
60 Sekunden speichert. rvcm_Send () markiert die Nachricht mit dem
Namen der Zustellverfolgungssitzung und einer Folgenummer. rvcm_Send
() leitet die Folgenummer an den Rufer in seinem sequenceNum-Parameter zurück (der
Nutzer kann diese Nummer zu Prüfzwecken
verwenden).
-
Jede
Sendesitzung verwaltet eine separate Reihenfolge für jedes
Thema, das sie sendet. Infolge dessen können Empfänger jede markierte Nachricht
anhand der drei Datenrückrufargumente "subject", "senderName" und "sequenceNum" eindeutig identifizieren.
-
Wenn
msg eine selbsterklärende
Länge hat,
so kann der Nutzer null für
msgSize übermitteln
(das System errechnet die tatsächliche
Größe automatisch).
Typen mit selbsterklärender
Größe sind
RVMSG_RVMSG, RVMSG_STRING (wenn die Zeichenkette NULL-terminiert
ist) und RVMSG_ENCRYPTED. Alle anderen Typen erfordern ein ausdrückliches
Größenargument
in diesem Ruf.
rvcm_Send()
-
rvcm_Send
() kopiert seine Argumente. Nachdem rvcm_Send () eine Rückmeldung
gibt, kann der Nutzer den Speicher (zum Beispiel einen Nachrichtenpuffer)
freigeben oder wiederbenutzen.
-
Warnhinweis
-
Es
ist ein Regelverstoß,
Nachrichten an "Joker"-Themennamen zu senden. rvcm_Send ()
verhindert zwar nicht, dass der Nutzer in regelwidriger Weise an "Joker"-Themen sendet, aber
die Resultate sind nicht vorhersehbar. Parameter
Fehler
Codierungsbeispiel
Deklaration
-
Zweck
-
Senden
einer markierten Anforderungsnachricht und Verfolgen der Zustellung
an kooperierende Mithörer.
Eine Anforderungsnachricht enthält
einen Antwortnamen als eine Rückmeldungsadresse
für Antwortnachrichten.
-
Anmerkungen
-
Diese
Funktion ist parallel zu rv_SendWithReply (). Es ist zu beachten,
dass ihre Signatur zwei zusätzliche
Parameter enthält:
timeLimit und sequenceNum.
-
Der
Antwortname muss der Themenname eines offenen Mithör-Endpunktes
sein (entweder rundgesendet oder Posteingangsfach). Eine Anwendung
kann null, eine oder mehrere Antworten auf eine Anforderungsnachricht
empfangen. Bevor der Nutzer rvcm_SendWithReply () ruft, muss der
Nutzer gewährleisten, dass
die entsprechenden Anwendungskomponenten auf den Antwortnamen mithören.
-
rvcm
SendWithReply () ist eine nicht-sperrende Funktion. Sie gibt unverzüglich eine
Rückmeldung, und
die Rückruffunktion
empfängt
alle Antworten asynchron. Eine Antwort ist nicht garantiert (wenn
zum Beispiel der Empfänger
keine Antwort sendet).
-
Mittels
timeLimit wird die Dauer der Nachricht spezifiziert. Das System
behält
die Nachricht in seinem Register, bis es entweder eine Zustellbestätigung von
alle kooperierenden Mithörern
empfängt
oder die Zeitbegrenzung abläuft.
Wenn die Zeitbegrenzung abläuft,
bevor die Zustellung vollendet ist, so entfernt das System die Nachricht
aus dem Register und erzeugt eine ZUSTELLUNG.GESCHEITERT-Hinweismeldung,
welche die kooperierenden Mithörer
auflistet, die nicht die Zustellung der Nachricht bestätigt haben.
-
Es
wird ein timeLimit-Wert von länger
als 60 Sekunden empfohlen, da die Domäne Nachrichten für 60 Sekunden
speichert.
rvcm_SendWithReply()
-
rvcm_SendWithReply()
markiert die Nachricht mit dem Namen der Zustellverfolgungssitzung
und einer Folgenummer. rvcm_SendWithReply() leitet die Folgenummer
an den Rufer in seinem sequenceNum-Parameter zurück (der Nutzer kann diese Nummer
zu Prüfzwecken
verwenden).
-
Jede
Sendesitzung verwaltet eine separate Reihenfolge für jedes
Thema, das sie sendet. Infolge dessen können Empfänger jede markierte Nachricht
anhand von drei Datenrückrufargumenten
eindeutig identifizieren: "subject", "senderName" und "sequenceNum".
-
Wenn
msg eine selbsterklärende
Länge hat,
so kann der Nutzer null für
msgSize übermitteln
(das System errechnet die tatsächliche
Größe automatisch).
Typen mit selbsterklärender
Größe sind
RVMSG_RVMSG, RVMSG_STRING (wenn die Zeichenkette NULL-terminiert
ist) und RVMSG_ENCRYPTED. Alle anderen Typen erfordern ein ausdrückliches
Größenargument
in diesem Ruf.
-
rvcm_SendWithReply()
kopiert seine Argumente. Nachdem rvcm SendWithReply() eine Rückmeldung gegeben
hat, kann der Nutzer Speicher (zum Beispiel einen Nachrichtenpuffer)
freigeben oder wiederverwenden.
-
Warnhinweis
-
Es
ist ein Regelverstoß,
Nachrichten an "Joker"-Themennamen zu senden. Zwar hindert
die Funktion rvcm_SendWithReply() den Nutzer nicht daran, regelwidrig
an "Joker"-Themen zu senden,
doch die Resultate sind unvorhersehbar. Parameter
Fehler
Codierungsbeispiel
Deklaration
-
Zweck
-
- Voranmeldung eines erwarteten Mithörers.
-
Anmerkungen
-
Einige
Absendeanwendungen können
Anforderungen für
eine zertifizierte Zustellung erwarten, schon bevor die Mithöranwendungen
zu laufen beginnen. In solchen Situationen kann der Absender Mithörer voranmelden,
so dass das System beginnt, abgehende Nachrichten im Register des
Absenders zu speichern. Wenn der Mithörer eine zertifizierte Zustellung
anfordert, so empfängt
er die rückgestauten
Nachrichten.
-
Wenn
der Korrespondent mit diesem Namen bereits eine zertifizierte Zustellung
dieses Themas von dieser Absendersitzung empfängt, dann hat rvcm_AddListener()
keine Wirkung.
-
Wenn
der Korrespondent mit diesem Namen nicht zugelassen ist, dann meldet
rvcm_AddListener() einen Fehler zurück. Der Nutzer kann rvcm_AllowListener()
rufen, um die Wirkung eines früheren
Rufes an rvcm_DisallowListener() aufzuheben; dann wird rvcm_AddListener()
erneut gerufen. Parameter
Fehler Codierungsbeispiel Deklaration
-
Zweck
-
- Abmelden eines bestimmten Mithörers bei einem bestimmten Korrespondenten
und Freigeben von zugehörigem
Speicher im Register des Absenders.
-
Anmerkungen
-
Diese
Funktion storniert die zertifizierte Zustellung des bestimmten Themas
an den Korrespondenten mit diesem Namen. Der Mithörkorrespondent
kann sich anschließend
erneut für
eine zertifizierte Zustellung des Themas anmelden. (Im Gegensatz
dazu storniert rvcm_DisallowListener() die zertifizierte Zustellung
aller Themen an den Korrespondenten und untersagt die Neuanmeldung.)
-
Absender
rufen in der Regel diese Funktion, wenn die Registerposition für einen
Mithörkorrespondenten
sehr groß geworden
ist. Ein solches Größerwerden
zeigt an, dass der Mithörer
nicht die Zustellung bestätigt
und möglicherweise
seinen Betrieb abgebrochen hat. Das Entfernen des Mithörers verkleinert
das Register durch Löschen
von Nachrichten, die für
den Mithörer
gespeichert wurden.
-
Wenn
ein Absendeprogramm diese Funktion ruft, so verhält sich die Software für zertifizierte
Zustellung in dem Absender so, als ob der Mithörer den Endpunkt für das Thema
geschlossen hätte.
Das Absendeprogramm löscht
aus seinem Register alle Informationen über die Zustellung des Themas
an den Korrespondenten mit diesem Namen. Das Absendeprogramm empfängt eine
ANMELDUNG.GESCHLOSSEN-Hinweismel dung, um jegliche Operationen in
der Rückruffunktion
für die
Hinweismeldung zu veranlassen.
-
Wenn
der Mithörkorrespondent
verfügbar
ist (er läuft
und ist erreichbar), so empfängt
er eine ANMELDUNG.NICHT_ZERTIFIZIERT-Hinweismeldung, die ihn informiert,
dass der Absender nicht mehr die Zustellung des Themas zertifiziert.
-
Wenn
der Korrespondent mit diesem Namen keine zertifizierte Zustellung
des Themas von dieser Absendersitzung empfängt, dann meldet rvcm_RemoveListener()
RVCM_ERR_BAD_SUBJECT zurück. Parameter
Fehler
Codierungsbeispiel
Deklaration
-
Zweck
-
- Stornieren der zertifizierten Zustellung an alle Mithörer bei
einem bestimmten Korrespondenten. Verweigern anschließender Anmeldungsanforderungen
für eine
zertifizierte Zustellung von jenen Mithörern.
-
Anmerkungen
-
Nicht
zugelassene Mithörer
empfangen immer noch anschließende
Nachrichten von diesem Absender, aber die Zustellung ist nicht zertifiziert.
Das heißt:
- – Der
Mithörer
empfängt
eine ANMELDUNG.NICHT_ZERTIFIZIERT-Hinweismeldung, die ihn darüber informiert,
dass der Absender die zertifizierte Zustellung aller Themen storniert
hat.
- – Wenn
das Register des Absenders Nachrichten enthält, die an den nicht zugelassenen
Mithörer
gesendet wurden (für
die dieser Mithörer
keine Zustellung bestätigt),
dann entfernt das System jene Registerpositionen und versucht nicht,
jene Nachrichten erneut zuzustellen.
- – Das
System übermittelt
anschließende
Nachrichten (von dem stornierenden Absender) an den Mithörer mit
der Folgenummer null, um anzuzeigen, dass die Zustellung nicht zertifiziert
ist.
-
Die
Absender können
sofort die Entgegennahme der zertifizierten Zustellung widerrufen,
indem sie rvcm_DisallowListener() innerhalb der Rückruffunktion
rufen, welche die ANMELDUNGSANFORDERUNG-Hinweismeldung verarbeitet.
-
Diese
Funktion verbietet einen Korrespondenten anhand des Namens. Wenn
der Korrespondent abbricht und eine andere Prozessinstanz (mit dem
gleichen wiederverwendbaren Namen) seine Stelle einnimmt, so ist
der neue Prozess durch diesen Absender immer noch nicht zugelassenen.
-
Um
die Wirkung von rvcm_DisallowListener() aufzuheben, wird rvcm_AllowListener()
gerufen. Parameter
Fehler
Codierungsbeispiel
Deklaration
-
Zweck
-
Auffordern
des benannten Empfängers,
die zertifizierte Zustellung für
seine Mithörer
wieder aufzunehmen, wodurch die Wirkung vorheriger Rufe an rvcm_DisallowListener()
aufgehoben wird.
-
Anmerkungen
-
Bei
Empfang der Aufforderung zur Wiederaufnahme der zertifizierten Zustellung
sendet das System im Mithörprogramm
automatisch neue Anmeldungsanforderungen. Das Absendeprogramm akzeptiert
diese Anforderungen und stellt die zertifizierte Zustellung wieder
her. Parameter
Fehler
Codierungsbeispiel
Deklaration
-
Zweck
-
- Außerkraftsetzen
der automatischen Zustellbestätigung
für diesen
Mithör-Endpunkt.
-
Anmerkungen
-
Das
als Standard voreingestellte Verhalten von zertifizierten Mithörern ist,
automatisch die Nachrichtenzustellung nach Rückmeldung von der Datenrückruffunktion
zu bestätigen
(siehe rvcm_Callback, oben). Dieser Ruf setzt selektiv dieses Verhalten
für diesen
konkreten Mithör-Endpunkt außer Kraft.
(Dieser Ruf beeinflusst keine anderen Mithör-Endpunkte.)
-
Durch
Außerkraftsetzung
der automatischen Bestätigung übernimmt
der Mithörer
die Zuständigkeit
für das
ausdrückliche
Bestätigen
jeder ankommenden zertifizierten Nachricht durch Rufen von rvcm_Confirm().
-
Die
Außerkraftsetzung
der automatischen Bestätigung
ist in Betracht zu ziehen, wenn bei der Verarbeitung ankommender
Nachrichten asynchrone Aktivitäten
ausgeführt
werden, wie zum Beispiel Berechnungen in anderen Befehlsfolgen,
Datenbankabfragen oder zusätzliche
Netzwerkkommunikation.
-
Es
gibt kein Verfahren zum Wiederherstellen des als Standard voreingestellten
Verhaltens, das die Wirkung dieser Funktion umkehren würde. Parameter
Fehler
Deklaration
-
Zweck
-
- Bestätigten
der Zustellung einer zertifizierten Nachricht.
-
Anmerkungen
-
Diese
Funktion ist nur in Programmen zu nutzen, welche die automatische
Bestätigung
außer
Kraftsetzen.
-
Das
Dreigespann aus Themenname, Absender und Folgenummer identifiziert
eindeutig jede zertifizierte Nachricht. Der Themenname ist bereits
in dem Mithör-Endpunkt
gespeichert. Die anderen zwei Komponenten – Absender und Folgenummer – sind ausdrückliche
Parameter dieser Funktion. Parameter
Fehler
Deklaration
-
Zweck
-
- Zusammenfassen des Zustellstatus' von Nachrichten im Register.
-
Anmerkungen
-
Die
Rückruffunktion
empfängt
eine einzelne Nachricht für
jedes übereinstimmende
Thema, das im Register gespeichert ist. Wenn zum Beispiel rvcm_ReviewLedger()
FOO. * als sein Themenargument empfängt, so ruft es die Rückruffunktion
separat für
diese übereinstimmenden
Themen: einmal für
FOO.BAR, einmal für FOO.BAZ
und einmal für
FOO.BOX.
-
Wenn
jedoch die Rückruffunktion
nicht-NULL zurückmeldet,
dann gibt rvcm_ReviewLedger() unverzüglich eine Rückmeldung.
-
Wenn
das Register keine übereinstimmenden
Positionen enthält,
so gibt rvcm_ReviewLedger()normalerweise eine Rückmeldung, ohne die Rückruffunktion
zu rufen.
-
Für Informationen
zum Inhalt und Format der Rückrufnachrichten
siehe rvcm_ReviewCallback, unten. Parameter
Fehler
Codierungsbeispiel
Deklaration
-
Zweck
-
rvcm_ReviewCallback
ist der Funktionstyp von Rückruffunktionen
zum Überprüfen des
Registers. Anwendungen definieren Funktionen dieses Typs zum Verarbeiten
der Zusammenfassungsnachrichten von rvcm_ReviewLedger().
-
Anmerkungen
-
rvcm_ReviewLedger()
ruft diesen Rückruf
einmal für
jedes übereinstimmende
Thema im Register.
-
Um
mit der Überprüfung des
Registers fortzufahren, wird NULL von dieser Rückruffunktion zurückgemeldet.
Um das Überprüfen des
Registers zu stoppen, wird nicht-NULL von dieser Rückruffunktion
zurückgemeldet;
rvcm_ReviewLedger() gibt unverzüglich
eine Rückmeldung. Parameter
Nachrichteninhalt
Codierungsbeispiel
-
-
Deklaration
-
- rvcm_Error rvcm_SyncLedgerFile (rv_Session session);
-
Zweck
-
- Synchronisieren der Registerdatei auf ihr Speichermedium.
-
Anmerkungen
-
Wenn
diese Funktion eine Rückmeldung
gibt, so wird der augenblickliche Zustand der Sitzung sicher in
der Registerdatei gespeichert.
-
Zustellverfolgungssitzungen,
die mit synchronen Registerdateien arbeiten, brauchen diese Funktion nicht
zu rufen, da der augenblickliche Zustand automatisch vor der Rückmeldung
in das Dateisystem geschrieben wird. Parameter
Fehler
-
rvcm_Error
ist ein aufgezählter
Typ für
Fehlercodes. Tabelle A2 listet die möglichen rvcm_Error-Werte auf.
Der Nutzer kann die Funktion rvcm_ErrorText() nutzen, um rvcm_Error-Nachrichtencodes
in beschreibenden Text umzuwandeln. Für mehr Informationen siehe
rvcm_ErrorText() auf Seite 244. Tabelle
A2: Aufgezählte
Werte von rvcm_Error
- Siehe
auch
rvcm_ErrorText(), unten.
-
Anhang B: Verteilte Warteschlangen
(Programmierungsdetails für
C-Programmierer)
-
Dieser
Anhang A beschreibt Programmierungsdetails für C-Programmierer, die eine
zertifizierte Nachrichtenzustellung implementieren wollen. Der Anhang
gibt in Tabelle A1 eine Übersicht über die
Zustell-Datenarten und Funktionen der zertifizierten Nachrichtenübermittlung.
Jede Datenart oder Funktion wird dann näher mit Querverweisen auf verwandte
Datenarten oder Funktionen beschrieben.
-
Wie
oben beschrieben, können
Anwendungen verteilte Warteschlangen für eine zertifizierte Zustellung
an einen einzelnen von n Mithörern
(Warteschlangenelemente-Sitzungen) verwenden. Diese Funktionen verteilter
Warteschlangen werden in der Regel in Kombination mit einer zertifizierten
Nachrichtenzustellung verwendet.
-
Verteilte
Warteschlange CAPI
-
Die
folgende Tabelle BA fasst die Datenarten und Funktionen in der verteilten
Warteschlange CAPI zusammen. Tabelle
B1: Verteilte Warteschlangen: Datenarten und Funktionen
- rvcm_EnableQueue()
Funktion
Deklaration
-
Zweck
-
- Aktivieren einer Sitzung für zertifizierte Nachrichtenzustellung
als Teil einer verteilten Warteschlange für eine zertifizierte "eine-von-n"-Zustellung.
-
Anmerkungen
-
Jedes
Element einer verteilten Warteschlange hört auf dieselben Themen mit.
Doch selbst, wenn n Elemente mithören, verarbeitet für jede ankommenden
Nachricht (oder Aufgabe) genau ein Element die Nachricht.
-
Programme
müssen
vor anderen Rufen, die mit verteilten Warteschlangen oder zertifiziertem
Mithören zu
tun haben, rvcm_EnableQueue() rufen.
-
Sobald
eine Sitzung zu einem Warteschlangenelement wird, kann sie ihre
Beteiligung nur noch mit rv_Term() beenden.
-
Rollen von
Warteschlangenelementen
-
Jede
Sitzung von Elementen einer verteilten Warteschlange hat zwei eigenständige Rollen:
als ein Mithörer
und als ein potenzieller Planer.
-
In
der Mithörer-Rolle
unterstützen
Warteschlangenelemente-Sitzungen eine begrenzte Teilmenge von Rufen
für eine
zertifizierte Zustellung: rvcm_ListenSubject(), rvcm_NoAutoConirm()
und rvcm_Confirm(). Warteschlangenelemente-Sitzungen unterstützen keine
anderen Rufe für
eine zertifizierte Zustellung (insbesondere Rufe, die mit dem Senden
zertifizierter Nachrichten zu tun haben). Sie unterstützen jedoch
alle Standardsystemrufe (zum Beispiel rv_Send()).
-
Systemfehlertoleranzsoftware
verwaltet genau einen einzigen aktiven Planer in jeder Warteschlange. Wenn
der Planerprozess abbricht, übernimmt
ein anderes Element die Rolle des Planers. Die Warteschlangenelemente-Sitzung
in der Planer-Rolle weist ankommende Aufgaben an Mithörer in der
Warteschlange zu. (Ein Planer kann Aufgaben an seine eigene Mithörerkomponente
zuweisen, tut dies aber nur, wenn alle anderen Mithörer beschäftigt sind.) Parameter
Fehler
Deklaration
-
Zweck
-
- Ändern
des Entgegennahmezeit-Parameters einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Wenn
diese Sitzung, die als der Planer agiert, eine Aufgabe an einen
Mithörer
(eine andere Warteschlangenelemente-Sitzung) zuweist, so stellt
sie einen Timer mit dieser Länge
(in Millisekunden) ein. Wenn der Timer abläuft, bevor der Planer die Entgegennahme
von dem Mithörer
empfängt,
so weist der Planer die Aufgabe an einen anderen Mithörer neu
zu.
-
Null
ist ein spezieller Wert, der keine Begrenzung für die Entgegennahmezeit spezifiziert.
Das heißt, der Planer
stellt keinen Timer ein und weist keine Aufgaben neu zu.
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement stellt seinen
Entgegennahmezeit-Parameter stillschweigend als DEFAULT ACCEPT_TIME
(null) ein. Parameter
Fehler
Deklaration
-
Zweck
-
- Extrahieren des Entgegennahmezeit-Parameters einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Wenn
diese Sitzung, die als der Planer agiert, eine Aufgabe an einen
Mithörer
(eine andere Warteschlangenelemente-Sitzung) zuweist, so stellt
sie einen Timer für
die Entgegennahmezeit (in Millisekunden) ein. Wenn der Timer abläuft, bevor
der Planer die Entgegennahme von dem Mithörer empfängt, so weist der Planer die
Aufgabe an einen anderen Mithörer
neu zu.
-
Null
ist ein spezieller Wert, der keine Begrenzung für die Entgegennahmezeit spezifiziert
(der Planer stellt keinen Timer ein).
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement stellt seinen
Entgegennahmezeit-Parameter stillschweigend als DEFAULT ACCEPT_TIME
(null) ein. Parameter
Fehler
- rvcm_Qz,QueueAcceptTime()
Deklaration
-
Zweck
-
- Ändern
des Vollendungszeit-Parameters einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Wenn
diese Sitzung, die als der Planer agiert, eine Aufgabe an einen
Mithörer
(eine andere Warteschlangenelemente-Sitzung) zuweist, so stellt
sie einen Timer mit dieser Länge
(in Millisekunden) ein. Wenn der Timer abläuft, bevor der Planer eine
Vollendungsnachricht von dem Mithörer empfängt, so weist der Planer die
Aufgabe an einen anderen Mithörer
neu zu.
-
Null
ist ein spezieller Wert, der keine Begrenzung für die Vollendungszeit spezifiziert
(der Planer stellt keinen Timer ein).
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement stellt ihren
Vollendungszeit-Parameter stillschweigend auf DEFAULT_COMPLETE_TIME
(null) ein. Parameter
Fehler
Deklaration
-
Zweck
-
- Extrahieren des Vollendungszeit-Parameters einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Wenn
diese Sitzung, die als der Planer agiert, eine Aufgabe an einen
Mithörer
(eine andere Warteschlangenelemente-Sitzung) zuweist, so stellt
sie einen Timer für
die Vollendungszeit (in Millisekunden) ein. Wenn der Timer abläuft, bevor
der Planer eine Vollendungsnachricht von dem Mithörer empfängt, so
weist der Planer die Aufgabe an einen anderen Mithörer neu
zu.
-
Null
ist ein spezieller Wert, der keine Begrenzung für die Vollendungszeit spezifiziert
(der Planer stellt keinen Timer ein).
-
Das
Aktivieren einer Sitzung als ein Warteschlangen element stellt ihren
Vollendungszeit-Parameter stillschweigend auf DEFAULT_COMPLETE_TIME
(null) ein. Parameter
Fehler
Deklaration
-
Zweck
-
- Extrahieren des Vollendungszeit-Parameters einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Wenn
diese Sitzung, die als der Planer agiert, eine Aufgabe an einen
Mithörer
(eine andere Warteschlangenelemente-Sitzung) zuweist, so stellt
sie einen Timer für
die Vollendungszeit (in Millisekunden) ein. Wenn der Timer abläuft, bevor
der Planer eine Vollendungsnachricht von dem Mithörer empfängt, so
weist der Planer die Aufgabe an einen anderen Mithörer neu
zu.
-
Null
ist ein spezieller Wert, der keine Begrenzung für die Vollendungszeit spezifiziert
(der Planer stellt keinen Timer ein).
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement stellt ihren
Vollendungszeit-Parameter stillschweigend auf DEFAULT_COMPLETE_TIME
(null) ein. Parameter
Fehler
Deklaration
-
Zweck
-
- Ändern
des Mithörergewichts-Parameters
einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Wenn
der Planer eine Aufgabe empfängt,
so weist er die Aufgabe an den verfügbaren Mithörer mit dem größten Mithörergewicht
zu.
-
Ein
Mithörer
wird als verfügbar
angesehen, solange nicht eine dieser Bedingungen eintritt:
- – Die
anstehenden Aufgaben, die dem Mithörer zugewiesen sind, übersteigen
seine Aufgabenkapazität.
- – Die
Mithörersitzung
ist der Planer. (Der Planer weist Aufgaben an seinen eigenen Mithörer nur
zu, wenn keine anderen Mithörer
verfügbar
sind.)
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement stellt ihren
Mithörergewichts-Parameter stillschweigend
auf DEFAULT_LISTENER_WEIGHT (1) ein. Parameter
Fehler
Deklaration
-
Zweck
-
- Extrahieren des Mithörergewichts-Parameters
einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Wenn
der Planer eine Aufgabe empfängt,
so weist er die Aufgabe dem verfügbaren
Mithörer
mit dem größten Mithörergewicht
zu.
-
Ein
Mithörer
wird als verfügbar
angesehen, solange nicht eine dieser Bedingungen eintritt:
- – Die
anstehenden Aufgaben, die dem Mithörer zugewiesen sind, übersteigen
seine Aufgabenkapazität.
- – Die
Mithörersitzung
ist der Planer. (Der Planer weist Aufgaben an seinen eigenen Mithörer nur
zu, wenn keine anderen Mithörer
verfügbar
sind.)
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement stellt ihren
Mithörergewichts-Parameter stillschweigend
auf DEFAULT_LISTENER_WEIGHT (1) ein. Parameter
Fehler
Deklaration
-
Zweck
-
- Ändern
des Mithöreraufgaben-Parameters
einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Die
Aufgabenkapazität
ist die maximale Anzahl von Aufgaben, die ein Mithörer entgegennehmen kann.
Wenn die Anzahl von entgegengenommenen Aufgaben dieses Maximum erreicht,
so kann der Mithörer erst
dann wieder zusätzliche
Aufgaben entgegennehmen, wenn er eine oder mehrere von ihnen ausgeführt hat.
-
Wenn
der Planer eine Aufgabe empfängt,
so weist er die Aufgabe an den Mithörer (ein Warteschlangenelement)
mit dem größten Mithörergewicht
zu, sofern nicht die anstehenden Aufgaben, die diesem Mithörer zugewiesen
sind, seine Aufgabenkapazität übersteigen.
Wenn der bevorzugte Mithörer
zu viele Aufgaben hat, so weist der Planer die neue ankommende Aufgabe
an den Mithörer
mit dem nächst-höheren Mithörergewicht zu.
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement stellt ihren
Mithöreraufgaben-Parameter stillschweigend
auf DEFAULT_LISTENER_TASKS (1) ein.
-
Die
Programmierer können
die Aufgabenkapazität
anhand zweier Faktoren abstimmen:
- – Multitasking-Programm
auf Mehrprozessor-Hardware.
Auf einem Mehrprozessor-Computer
hat ein Mehrpfadprogramm, das n Befehlsfolgen und n Prozessoren für ankommende
Aufgaben aufwendet, eine Aufgabenkapazität n.
- – Kommunikationsverzögerung.
In
den meisten verteilten Warteschlangenanwendungen ist die Kommunikationszeit
ein unbedeutender Bruchteil der Aufgabenumlaufzeit. Das heißt, die
Zeit, die benötigt
wird, um eine Aufgabe zuzuweisen und ihre Vollendung zu signalisieren,
ist sehr gering im Vergleich zu der Zeit, die benötigt wird,
um die Aufgabe selbst zu verarbeiten. Wenn zum Beispiel die durchschnittliche
Aufgabenumlaufzeit 2000 Millisekunden beträgt, wovon die Kommunikationszeit
insgesamt nur 10 Millisekunden ausmacht, dann ist die Aufgabenkapazität die gleiche
wie die Anzahl von Prozessoren oder Befehlsfolgen.
-
Jedoch
kann in einigen Situationen die Kommunikationszeit beträchtlich
sein; zum Beispiel, wenn die Warteschlangenelemente an entfernten
Standorten verteilt sind, die durch ein Wide Area Network (WAN)
miteinander verbunden sind. Wenn die Kommunikationszeit beträchtlich
ist, so ändert
sich die Bedeutung von "Aufgabenkapazität". Anstatt die Anzahl
der Aufgaben zu bezeichnen, die ein Mithörer gleichzeitig verarbeiten kann,
bezeichnet sie die Anzahl der Aufgaben, welche die Kapazität des Mithörers trotz
der Kommunikationsverzögerung
ausfüllen
kann. Wenn zum Beispiel die durchschnittliche Aufgabenumlaufzeit
1500 Millisekunden beträgt,
wovon die durchschnittliche Aufgabenverarbeitungszeit insgesamt
1000 Millisekunden ausmacht, dann minimiert das Setzen der Aufgabenkapazität auf 3
die Leerlaufzeit des Mithörers
zwischen den Aufgaben.
-
Beim
Abstimmen der Aufgabenkapazität
zum Kompensieren der Kommunikationsverzögerung ist die Balance von
entscheidender Bedeutung. Ein Unterlasten eines Mithörers (indem
seine Aufgabenkapazität
zu niedrig angesetzt wird) kann dazu führen, dass der Mithörer im Leerlauf
bleibt, während
er darauf wartet, dass der Planer seine nächste Aufgabe zuweist. Umgekehrt
kann ein Überlasten
eines Mithörers
(indem seine Aufgabenkapazität
zu hoch angesetzt wird) dazu führen,
dass einige zugewiesene Aufgaben warten müssen, während andere Mithörer, die
jene Aufgaben hätten
entgegennehmen können,
im Leerlauf bleiben. Parameter
Fehler
Deklaration
-
Zweck
-
- Extrahieren des Mithöreraufgaben-Parameters
einer Warteschlangenelemente-Sitzung.
-
Anmerkungen
-
Die
Aufgabenkapazität
ist die maximale Anzahl von Aufgaben, die ein Mithörer entgegennehmen kann.
Wenn die Anzahl von entgegengenommenen Aufgaben dieses Maximum erreicht,
so kann der Mithörer erst
dann wieder zusätzliche
Aufgaben entgegennehmen, wenn er eine oder mehrere von ihnen ausgeführt hat.
-
Wenn
der Planer eine Aufgabe empfängt,
so weist er die Aufgabe an den Mithörer (ein Warteschlangenelement)
mit dem größten Mithörergewicht
zu, sofern nicht die anstehenden Aufgaben, die diesem Mithörer zugewiesen
sind, seine Aufgabenkapazität übersteigen.
Wenn der bevorzugte Mithörer
zu viele Aufgaben hat, so weist der Planer die neue ankom mende Aufgabe
an den Mithörer
mit dem nächst-höheren Mithörergewicht zu.
-
Das
Aktivieren einer Sitzung als ein Warteschlangenelement stellt ihren
Mithöreraufgaben-Parameter stillschweigend
auf DEFAULT_LISTENER_TASKS (1) ein. Parameter
Fehler
rvcm_SetQueueListenerTasks(),
oben.