DE112020003938T5 - Verarbeiten eines nachrichtendatenstroms - Google Patents

Verarbeiten eines nachrichtendatenstroms Download PDF

Info

Publication number
DE112020003938T5
DE112020003938T5 DE112020003938.2T DE112020003938T DE112020003938T5 DE 112020003938 T5 DE112020003938 T5 DE 112020003938T5 DE 112020003938 T DE112020003938 T DE 112020003938T DE 112020003938 T5 DE112020003938 T5 DE 112020003938T5
Authority
DE
Germany
Prior art keywords
message
queue
timestamp
queues
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020003938.2T
Other languages
English (en)
Inventor
Martin Ross
Andrew Stephen Marcus Edwards
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020003938T5 publication Critical patent/DE112020003938T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Abstract

Ein Verfahren und damit in Zusammenhang stehendes System zum gleichzeitigen Verarbeiten eines zeitlichen Nachrichtendatenstroms kann zum Beispiel ein Erhalten von Nachrichten eines Nachrichtendatenstroms aufweisen, wobei jede Nachricht eine zugehörige Zeitmarke hat. Das Verfahren weist des Weiteren ein Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen auf, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an der ersten Stelle in der Warteschlange platziert wird. Das Verfahren weist daraufhin ein Steuern eines Abrufs der Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Nachricht und den Zeitmarken der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen auf.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf ein Verarbeiten von Daten und im Besonderen auf ein Verarbeiten eines zeitlichen Nachrichtendatenstroms.
  • Die vorliegende Offenbarung bezieht sich außerdem auf ein System zum Verarbeiten eines Nachrichtendatenstroms.
  • Die vorliegende Offenbarung bezieht sich des Weiteren auf ein Computerprogrammprodukt, aufweisend computerlesbaren Programmcode, der einen Prozessor eines Systems in die Lage versetzt, ein solches Verfahren zu realisieren.
  • Ein herkömmliches Datenverarbeitungssystem zum Verarbeiten zeitlicher Daten (oder Daten, die keine strikte Sequenzierung benötigen, jedoch ein Verarbeiten der Daten zu einer ähnlichen Zeit erfordern) kann üblicherweise eine Verarbeitungs-Engine aufweisen, die so gestaltet ist, dass sie Datenströme verarbeitet. Eine solche Verarbeitungs-Engine kann schnelle Datenströme in Echtzeit verarbeiten, und - zur Berücksichtigung verschieden großer Datenströme - kann die Verarbeitungs-Engine auf Grundlage der Größe der Datenströme skaliert werden. Dieses Skalieren kann jedoch dazu führen, dass Ausgabedaten nicht der Reihenfolge entsprechen, und somit die resultierenden Ausgabedaten unbrauchbar machen.
  • Zum Beispiel können Anwendungen in einem System Messdaten (z.B. Antwortzeiten, Transaktionsraten und eine Auslastung einer Zentraleinheit (Central Processing Unit, CPU)) über einen Nachrichten-Hub an eine Metrikverarbeitungs-Engine senden. Daraufhin kann die Metrikverarbeitungs-Engine die Messdaten an ein quelloffenes Metrikanalyse-Instrument senden. Ein Skalieren der Metrikverarbeitungs-Engine weist ein Aufteilen eines den Messdaten entsprechenden Themas in Partitionen (oder Warteschlangen) auf, sodass die Messdaten von Instanzen der Metrikverarbeitungs-Engine gemeinsam genutzt werden können. Wenn jedoch in einer der Instanzen der Metrikverarbeitungs-Engine ein Problem auftritt, sind die Instanzen womöglich nicht mehr synchron, was zu einer unbrauchbaren Ausgabe in einer Benutzerschnittstelle des Metrikanalyse-Instruments führt (z.B. können die Transaktionsratendaten eine Auslastungsspitze zeigen, die nicht im Einklang mit anderen Daten steht, wodurch eine präzise Datenkorrelation und Problemdiagnose verhindert wird).
  • In einem weiteren Beispiel kann ein Unternehmen, das eine große Menge an Artikeln verkauft oder vertreibt (z.B. ein Unternehmen, das Eintrittskarten verkauft), einen großen Durchsatz von Bestellungen bewältigen, indem es Aktionen, die einem Bestellen eines Artikels und einem Verarbeiten der Bestellung entsprechen, voneinander entkoppelt. Ein Bestellen eines Artikels kann dazu führen, dass eine Nachricht in einem Thema platziert wird, das spezifisch für den Artikel ist, wobei Bestellungsnachrichten (d.h. Nachrichten, die erzeugten Bestellungen entsprechen) über eine Anzahl von (im Folgenden als Warteschlangen bezeichneten) Partitionen hinweg angeordnet werden, die dem Thema entsprechen. Eine Mehrzahl von Verarbeitungs-Engines kann so gestaltet sein, dass sie die Nachrichten in jeder Warteschlange verarbeitet. Allerdings besteht die Gefahr, dass das Verarbeiten der Nachrichten ungleich auf die Mehrzahl von Verarbeitungs-Engines verteilt wird. Dies erhöht wiederum die Gefahr, dass Daten außerhalb der Reihenfolge eingehen, indem eine Person zum Beispiel den letzten Artikel der großen Menge an Artikeln auch dann empfängt, wenn ihre entsprechende Bestellung deutlich später als eine Bestellung einer weiteren Person erzeugt wurde, die ihren bestellten Artikel ebenfalls noch zu erhalten hat. Des Weiteren kann sich die Gefahr erhöhen, dass die Bestellung einer Person aufgrund einer „langsamen“ Verarbeitungs-Engine nicht abgewickelt wird.
  • In der Technik besteht somit ein Bedarf, die oben genannten Probleme zu lösen.
  • KURZDARSTELLUNG
  • Die vorliegende Offenbarung zielt außerdem darauf ab, ein System zum Verarbeiten eines Nachrichtendatenstroms bereitzustellen.
  • Die vorliegende Offenbarung zielt darauf ab, ein computerrealisiertes Verfahren zum Verarbeiten eines Nachrichtendatenstroms bereitzustellen.
  • Die vorliegende Offenbarung zielt des Weiteren darauf ab, ein Computerprogrammprodukt wie z.B. einen Computerprogrammcode bereitzustellen, um bei Ausführung durch eine Controller-Einheit ein vorgeschlagenes Verfahren zu realisieren.
  • Gemäß einem Aspekt der vorliegenden Offenbarung wird ein computerrealisiertes Verfahren zum Verarbeiten eines Nachrichtendatenstroms bereitgestellt. Das Verfahren weist ein Erhalten von Nachrichten eines Nachrichtendatenstroms auf, wobei jede Nachricht eine zugehörige Zeitmarke hat. Das Verfahren weist des Weiteren ein Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen auf, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an der ersten Stelle in der Warteschlange platziert wird. Das Verfahren weist außerdem ein Steuern eines Abrufs einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen auf.
  • Gemäß einem weiteren Aspekt der Offenbarung wird ein Computerprogrammprodukt zum Verarbeiten eines Nachrichtendatenstroms bereitgestellt. Das Computerprogrammprodukt weist ein computerlesbares Speichermedium mit darauf enthaltenen Programmanweisungen auf, wobei die Programmanweisungen durch eine Verarbeitungseinheit ausführbar sind, um die Verarbeitungseinheit zum Durchführen eines Verfahrens gemäß einer vorgeschlagenen Ausführungsform zu veranlassen.
  • Gemäß einem weiteren Aspekt der Offenbarung wird ein Verarbeitungssystem bereitgestellt, aufweisend mindestens einen Prozessor und das Computerprogrammprodukt gemäß einer Ausführungsform. Der mindestens eine Prozessor ist so gestaltet, dass er den Computerprogrammcode des Computerprogrammprodukts ausführt.
  • Gemäß einem weiteren Aspekt der Offenbarung wird ein System zum Verarbeiten eines Nachrichtendatenstroms bereitgestellt. Das System weist eine Schnittstelle auf, die konfiguriert wird, um Nachrichten eines Nachrichtendatenstroms zu erhalten, wobei jede Nachricht eine zugehörige Zeitmarke hat. Das System weist des Weiteren eine Warteschlangenkomponente auf, die konfiguriert wird, um jede Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen zu speichern. Die Nachrichten jeder Warteschlange werden auf Grundlage ihrer Zeitmarke sortiert, sodass eine Nachricht mit der frühesten Zeitmarke an der ersten Stelle in der Warteschlange platziert wird. Das System weist des Weiteren eine Nachrichtenabrufkomponente auf, die konfiguriert wird, um einen Abruf einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange aus der Mehrzahl von Warteschlangen auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen zu steuern.
  • Figurenliste
  • Unter Bezugnahme auf die folgenden Zeichnungen werden im Folgenden bevorzugte Ausführungsformen der vorliegenden Offenbarung beschrieben, die lediglich als Beispiel zu verstehen sind, wobei:
    • 1 eine bildliche Darstellung eines verteilten Beispielsystems darstellt, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert werden können;
    • 2 ein Blockschaubild eines Beispielsystems ist, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert werden können;
    • 3 ein vereinfachtes Blockschaubild einer Beispielausführungsform eines Systems zum gleichzeitigen Verarbeiten eines zeitlichen Nachrichtendatenstroms ist;
    • 4 ein Ablaufplan eines computerrealisierten Verfahrens zum gleichzeitigen Verarbeiten eines zeitlichen Nachrichtendatenstroms ist;
    • 5 eine grafische Darstellung der Schritte ist, die an einem Verfahren einer beispielhaften Ausführungsform beteiligt sind, wobei die vertikale Achse jede aus einer Mehrzahl von Warteschlangen beschreibt und die horizontale Achse eine Zeit einer Zeitmarke beschreibt, die einer Nachricht entspricht; und
    • 6 ein vereinfachtes Blockschaubild einer beispielhaften Ausführungsform eines Systems zum gleichzeitigen Verarbeiten eines zeitlichen Nachrichtendatenstroms ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Figuren sind lediglich schematisch und nicht maßstabsgetreu gezeichnet. Ebenso klar sollte sein, dass in den Figuren dieselben Bezugszeichen verwendet werden, um identische oder ähnliche Teile zu bezeichnen.
  • Wenn Ausführungsformen der vorliegenden Offenbarung ein Verfahren darstellen, kann ein solches Verfahren im Kontext der vorliegenden Anmeldung ein Prozess zur Ausführung durch einen Computer sein, d.h. es kann ein computerrealisierbares Verfahren sein. Die verschiedenen Schritte des Verfahrens können somit verschiedene Teile eines Computerprogramms widerspiegeln, z.B. verschiedene Teile eines oder mehrerer Algorithmen.
  • Im Kontext der vorliegenden Anmeldung kann ein System außerdem eine einzelne Einheit oder eine Zusammenstellung von verteilten Einheiten sein, die so gestaltet sind, dass sie eine oder mehrere Ausführungsformen der Verfahren der vorliegenden Offenbarung ausführen. Zum Beispiel kann ein System ein Personal Computer (PC), ein Server oder eine Zusammenstellung von PCs und/oder Servern sein, die über ein Netzwerk wie z.B. ein lokales Netzwerk, das Internet usw. verbunden werden, um gemeinsam mindestens eine Ausführungsform der Verfahren der vorliegenden Offenbarung auszuführen.
  • Vorgeschlagen werden Konzepte zum Verarbeiten eines Nachrichtendatenstroms. Solche Konzepte können ein gleichzeitiges Verarbeiten zeitlicher Daten ermöglichen, indem eine Verarbeitungs-Engine skaliert wird, während zugleich eine ungefähre zeitliche Koordinierung des Verarbeitens gewahrt bleibt. Entsprechend können Ausführungsformen ein gleichzeitiges Verarbeiten eines zeitlichen Nachrichtendatenstroms ermöglichen.
  • Ausführungsformen können in Verbindung mit einem Nachrichten- oder Ereignissystem realisiert werden, z.B. mit Realisierungen von Kafka®, Message Queue (MQ) oder Java Message Service (JMS).
  • Vorgeschlagene Ausführungsformen können ein Konzept eines Definierens einer Gruppe von Warteschlangen (oder Partitionen oder Datenströmen) verwenden, innerhalb derer Nachrichten gespeichert und zeitlich koordiniert (z.B. in eine Warteschlange gestellt) werden können. Nachrichten können der Reihenfolge nach aus den Warteschlangen abgerufen werden, wobei ein solcher Abruf auf Grundlage von Zeitmarken gesteuert werden kann, die den Nachrichten zugehörig sind. Zum Beispiel können die Zeitmarken analysiert und verwendet werden, um sicherzustellen, dass aus den Warteschlangen abgerufene Nachrichten relativ synchron bleiben.
  • Ausführungsformen der vorliegenden Offenbarung schlagen die Bereitstellung einer Nachrichtenabrufkomponente vor. Eine solche Nachrichtenabrufkomponente kann konfiguriert werden, um einen Abruf einer Nachricht aus der ersten Stelle in einer Warteschlange aus der Mehrzahl von Warteschlangen auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Nachricht und den Zeitmarken der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen zu steuern. Indem zum Beispiel ein Abruf einer Nachricht nur dann zugelassen wird, wenn sie innerhalb einer vorgegebenen zulässigen Zeitdifferenz der frühesten Zeitmarke über alle Warteschlangen hinweg liegt, kann eine zeitliche Koordinierung von abgerufenen Nachrichten gewahrt bleiben.
  • Ausführungsformen können somit die Verbesserung eines gleichzeitigen Verarbeitens eines zeitlichen Nachrichtendatenstroms bereitstellen, indem eine ungefähre zeitliche Koordinierung von gleichzeitig verarbeiteten Daten gewahrt bleibt.
  • Ausführungsformen können zum Beispiel in Verbindung mit Nachrichten- oder Streaming-Diensten realisiert werden. Solche Ausführungsformen können eine zeitliche Koordinierung von Nachrichtenströmen ermöglichen, ohne dass es erforderlich ist, eine strikte Reihenfolge und/oder ein Single-Thread-Verhalten zu erzwingen, die bzw. das kein Skalieren von Verarbeitungs-Engines ermöglicht. Entsprechend wird die Zuordnung von Nachrichten optimiert, wodurch die Gefahr einer mangelnden Effizienz von Nachrichten- oder Streaming-Diensten verringert wird. Dies ist lediglich ein Beispiel für Vorteile gegenüber dem Stand der Technik.
  • Zum Zwecke dieser Offenbarung ist eine Zielnachricht eine der Nachrichten eines Nachrichtendatenstroms. Eine Nachricht wird zu der Zielnachricht, wenn ein Kunde (oder eine andere Komponente) versucht, die Zielnachricht aus einer Warteschlange zu entfernen (z.B. das Subjekt eines GET-Befehls, wobei ein GET-Befehl ein Code ist, der die Nachricht für ein nachfolgendes Verarbeiten aus der Warteschlange entfernt). Im Allgemeinen ist die Zielnachricht die erste Nachricht (z.B. die nächste Nachricht, die Nachricht mit der frühesten Zeitmarke usw.) in der Warteschlange. Die Warteschlange, welche die Zielnachricht enthält, kann als die Zielwarteschlange bezeichnet werden.
  • Zum Zwecke dieser Offenbarung kann ein Thema eine Gruppe, ein Datenstrom und/oder eine Partition sein. Ein Thema kann jede Art eines Sortierens und/oder Organisierens der Mehrzahl von Nachrichten in einem Nachrichtendatenstrom sein, um diese in verschiedene Warteschlangen zu sortieren. Die Themen können eine Größe der Nachricht, eine Art der Nachricht (z.B. ein Format), eine Quelle der Daten, ein Zufalls-, Umlauf-, aufeinanderfolgendes und/oder beliebiges anderes Sortierverfahren sein (oder sich darauf beziehen). Zum Beispiel soll sich das System auf ein Verkaufen von Eintrittskarten für ein Ereignis beziehen. Zu einer bestimmten Zeit werden die Eintrittskarten freigegeben, und mehrere Kaufnachrichten werden erzeugt. Die Themen für die Eintrittskarten können die Anzahl von gekauften Eintrittskarten sein, die Gesamtmenge des Kaufs sein, auf dem einzelnen Kartenpreis beruhen, auf dem Ort des ursprünglichen Kaufs beruhen, auf dem Bereich (z.B. reservierte Sitzplätze gegenüber freier Sitzplatzwahl) der angeforderten Eintrittskarten beruhen und/oder ähnliche Faktoren sein.
  • Bei einer vorgeschlagenen Ausführungsform kann ein Steuern eines Abrufs ein Ermitteln einer Zeitdifferenz zwischen einer Zielnachricht und der an erster Stelle stehenden Nachricht aus jeder der anderen Warteschlangen aufweisen. Die Zeitdifferenz ist die Differenz zwischen Zeitmarken von zwei Nachrichten. Ein Steuern eines Abrufs kann dann ein Identifizieren des größten Werts einer Zeitdifferenz aus den ermittelten Zeitdifferenzen und ein anschließendes Zulassen eines Abrufs der Zielnachricht aus der Zielwarteschlange auf Grundlage dessen aufweisen, ob der größte Wert einer Zeitdifferenz einen Schwellenwert übersteigt. Auf diese Weise kann der Abruf von Nachrichten gesteuert werden, sodass Nachrichten gleichmäßig über alle Warteschlangen hinweg aus Warteschlangen abgerufen werden. Dies kann die zeitliche Koordinierung der den Nachrichten entsprechenden Daten optimieren, sodass zeitlich ähnliche Daten zu einer ähnlichen Zeit verarbeitet werden können. Auf diese Weise kann die Gefahr einer Störung einer Reihenfolge von zeitlichen Daten aufgrund eines Skalierens verringert werden. Dies stellt den Vorteil eines effizienten Skalierens von Prozessen bereit.
  • Bei manchen Ausführungsformen kann das Steuern eines Abrufs des Weiteren ein Empfangen eines Eingabesignals, das für eine zeitliche Koordinierungsanforderung steht, und ein Ermitteln des Schwellenwerts auf Grundlage des empfangenen Eingabesignals aufweisen. Somit kann der Schwellenwert, der verwendet wird, um den Abruf einer Nachricht herzustellen, abhängig von einer zeitlichen Koordinierungsanforderung sein. Hierdurch kann das Herstellen des Abrufs einer Nachricht auf Grundlage der Anforderungen für das Verfahren und/oder System erfolgen und kann in Bezug auf die Anforderungen automatisch angepasst werden. Auf diese Weise wird die Effizienz des Verfahrens und/oder Systems zum gleichzeitigen Verarbeiten eines zeitlichen Nachrichtendatenstroms optimiert.
  • Bei einer vorgeschlagenen Ausführungsform kann ein Zulassen eines Abrufs der Zielnachricht erfolgen, wenn der größte Wert einer Zeitdifferenz den Schwellenwert nicht übersteigt. Des Weiteren kann ein Abruf der Zielnachricht abgelehnt werden, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt. Somit kann der Abruf von Nachrichten über jede aus der Mehrzahl von Warteschlangen hinweg gleichmäßig gewahrt bleiben. Dies kann eine Gefahr einer Verzerrung beim Abrufen von Nachrichten innerhalb der Mehrzahl von Warteschlangen verringern und dadurch die Gefahr verringern, dass eine Warteschlange verglichen mit einer durchschnittlichen Menge über die Mehrzahl von Warteschlangen hinweg eine beträchtlich größere/kleinere Menge von Nachrichten abruft.
  • Bei manchen Ausführungsformen kann eine Fehlermeldung erzeugt werden, wenn der Abruf der Zielnachricht aus der Zielwarteschlange abgelehnt wird. Auf diese Weise kann ein Benutzer auf die Ablehnung eines Abrufs einer Nachricht aufmerksam gemacht werden. Hierdurch kann die Warteschlange, die dem abgelehnten Abruf entspricht, identifiziert werden, wodurch die Abrufrate für jede aus der Mehrzahl von Warteschlangen ermittelt und analysiert werden kann. Wenn eine vergleichsweise größere Menge von Abrufen in einer bestimmten Warteschlange abgelehnt wird, deren Menge ermittelt werden kann, kann somit die Warteschlange identifiziert werden, und Abhilfemaßnahmen können ergriffen werden.
  • Das Verfahren zum gleichzeitigen Verarbeiten eines zeitlichen Nachrichtendatenstroms kann des Weiteren ein Erzeugen einer Zeitmarke für jede erhaltene Nachricht aufweisen, wobei die Zeitmarke für eine der Nachricht zugehörige Zeit steht. Auf diese Weise weist jede Nachricht eine entsprechende Zeit auf, die durch die Zeitmarke identifiziert wird. Zum Beispiel kann die einer Nachricht zugehörige Zeitmarke die Zeit identifizieren, zu der die Nachricht erhalten (z.B. durch die Schnittstelle empfangen) wurde. Hierdurch können die Nachrichten auf eine zeitabhängige Art und Weise organisiert werden, sodass die zeitliche Koordinierung optimiert wird.
  • Ein Beispiel einer Zeitmarke kann die Zeit aufweisen, zu der die Nachricht mit einem PUT-Befehl in die Warteschlange gestellt wird, wobei PUT ein Befehl in einer Programmiersprache ist. Dieser kann durch den Client, der die Nachricht veröffentlicht, oder durch das Nachrichtensystem erzeugt werden. Dies kann zu der Zeit erfolgen, zu der die Nachricht in die Warteschlange gestellt wird, oder zu der Zeit, zu der die Nachrichtendaten erzeugt werden. Die Zeit kann eine Zeitspannen- oder Datumszeichenfolge sein, die sich in dem Nachrichtenhauptteil (oder in dem Nachrichtenkopf/den Metadaten) befinden kann.
  • Bei manchen Ausführungsformen kann sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen beziehen. Bei manchen Ausführungsformen kann das Verfahren zum gleichzeitigen Verarbeiten eines zeitlichen Nachrichtendatenstroms des Weiteren für jedes aus der Mehrzahl von Themen ein Definieren einer oder mehrerer Warteschlangen aufweisen, die einem jeden Thema zugehörig sind. Das Verfahren kann des Weiteren ein Speichern jeder Nachricht in mindestens einer aus der Mehrzahl von Warteschlangen aufweisen, die sich auf mindestens ein Thema in der Warteschlange beziehen, die demselben Thema bzw. denselben Themen zugehörig ist. Somit kann das Verfahren erweitert werden, um mehr als ein Thema - und in der Folge die entsprechende Mehrzahl von Warteschlangen - zu einer Gruppe zusammenzufassen. Hierdurch kann eine Mehrzahl von Themen, die sich auf die Nachrichten beziehen, parallel verarbeitet werden, wodurch die Effizienz des Verfahrens und/oder Systems verbessert wird und die Komplexität des Verfahrens und/oder Systems erhöht werden kann.
  • 1 stellt eine bildliche Darstellung eines beispielhaften verteilten Systems dar, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert werden können. Das verteilte System 100 kann ein Netzwerk von Computern enthalten, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert werden können. Das verteilte System 100 enthält mindestens ein Netzwerk 102, bei dem es sich um das Medium handelt, mit dem Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern bereitgestellt werden, die innerhalb des verteilten Datenverarbeitungssystems 100 miteinander verbunden werden. Das Netzwerk 102 kann Verbindungen wie z.B. drahtgebundene und drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel enthalten.
  • In dem dargestellten Beispiel sind ein erster Server 104 und ein zweiter Server 106 zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Zusätzlich sind auch Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Die Clients 110, 112 und 114 können zum Beispiel Personal Computer, Netzwerkcomputer oder dergleichen sein. In dem dargestellten Beispiel stellt der erste Server 104 den Clients 110, 112 und 114 Daten wie z.B. Boot-Dateien, Betriebssystemabbilder und Anwendungen bereit. In dem dargestellten Beispiel sind die Clients 110, 112 und 114 Clients des ersten Servers 104. Das verteilte Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und andere nicht gezeigte Einheiten enthalten.
  • In dem dargestellten Beispiel ist das verteilte System 100 das Internet, wobei das Netzwerk 102 für eine weltweite Zusammenstellung von Netzwerken und Gateways steht, welche die TCP/IP-Protokollfamilie (Transmission Control Protocol/Internet Protocol) verwenden, um untereinander Daten auszutauschen. Der Kern des Internets wird aus einer Struktur von Hochgeschwindigkeits-Datenübertragungsverbindungen zwischen wichtigen Knoten oder Host-Computern gebildet, die aus tausenden von gewerblichen, behördlichen, dem Bildungssektor zugehörigen und anderen Computersystemen bestehen, die Daten und Nachrichten weiterleiten. Das verteilte System 100 kann auch als eine Anzahl verschiedener Arten von Netzwerken realisiert werden, zum Beispiel als ein Intranet, ein lokales Netzwerk (Local Area Network, LAN), ein Weitverkehrsnetzwerk (Wide Area Network, WAN) oder dergleichen. Wie oben erwähnt, ist 1 als ein Beispiel, nicht als eine architektonische Beschränkung verschiedener Ausführungsformen der vorliegenden Offenbarung gedacht, weshalb die in 1 gezeigten bestimmten Elemente nicht als Beschränkung der Umgebungen zu verstehen sind, in denen die veranschaulichenden Ausführungsform der vorliegenden Offenbarung realisiert werden können.
  • 2 ist ein Blockschaubild eines Beispielsystems 200, in dem Aspekte der veranschaulichenden Ausführungsformen realisiert werden können. Das System 200 ist ein Beispiel für einen Computer wie z.B. den Client 110 aus 1, in dem sich computernutzbarer Code oder computernutzbare Anweisungen befinden können, welche die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Offenbarung realisieren.
  • In dem dargestellten Beispiel verwendet das System 200 eine Hub-Architektur, die einen North Bridge & Memory Controller Hub (NB/MCH) 202 und einen South Bridge & Input/Output (I/O) Controller Hub (SB/ICH) 204 enthält. Eine Verarbeitungseinheit 206, ein Hauptarbeitsspeicher 208 und ein Grafikprozessor 210 werden mit dem NB/MCH 202 verbunden. Der Grafikprozessor 210 kann über einen Accelerated Graphics Port (AGP) mit dem NB/MCH 202 verbunden werden.
  • In dem dargestellten Beispiel wird ein LAN-Adapter 212 mit dem SB/ICH 204 verbunden. Ein Audioadapter 216, ein Tastatur- und Mausadapter 220, ein Modem 222, ein Festwertspeicher (Read Only Memory, ROM) 224, ein Festplattenlaufwerk (Hard Disk Drive, HDD) 226, ein CD-ROM-Laufwerk 230, USB-Anschlüsse (Universal Serial Bus) und andere Datenübertragungsanschlüsse 232 sowie PCI/PCIe-Einheiten 234 werden über einen ersten Bus 238 und einen zweiten Bus 240 mit dem SB/ICH 204 verbunden. Die PCI/PCIe-Einheiten können zum Beispiel Ethernet-Adapter, Erweiterungskarten und PC-Karten für Notebook Computer enthalten. PCI verwendet einen CardBus-Controller, PCle nicht. Der ROM 224 kann zum Beispiel ein Flash-BIOS (Binary Input/Output System) sein.
  • Das HDD 226 und das CD-ROM-Laufwerk 230 werden über den zweiten Bus 240 mit dem SB/ICH 204 verbunden. Das HDD 226 und das CD-ROM-Laufwerk 230 können zum Beispiel eine IDE-Schnittstelle (Integrated Drive Electronics) oder eine SATA-Schnittstelle (Serial Advanced Technology Attachment) verwenden. Eine SIO-Einheit (Super I/O) 236 kann mit dem SB/ICH 204 verbunden werden.
  • In der Verarbeitungseinheit 206 wird ein Betriebssystem ausgeführt. Das Betriebssystem koordiniert verschiedene Komponenten innerhalb des Systems 200 aus 2 und stellt deren Steuerung bereit. Als Client kann das Betriebssystem ein handelsübliches Betriebssystem sein. Ein objektorientiertes Programmiersystem wie z.B. das Java™-Programmiersystem kann gemeinsam mit dem Betriebssystem ausgeführt werden und Aufrufe an Java™-Programme oder -Anwendungen bereitstellen, die auf dem System 200 ausgeführt werden.
  • Als Server kann das System 200 zum Beispiel ein IBM® eServer™ System p®-Computersystem sein, welches das Betriebssystem Advanced Interactive Executive (AIX®) oder das LINUX®-Betriebssystem ausführt. Das System 200 kann ein symmetrisches Mehrprozessorsystem (Symmetric Multiprocessor, SMP) sein, das eine Mehrzahl von Prozessoren in der Verarbeitungseinheit 206 enthält. Alternativ kann ein Einzelprozessorsystem verwendet werden.
  • Anweisungen für das Betriebssystem, das Programmiersystem und Anwendungen oder Programme befinden sich auf Speichereinheiten wie z.B. dem HDD 226 und können zur Ausführung durch die Verarbeitungseinheit 206 in den Hauptarbeitsspeicher 208 geladen werden. Entsprechend können ein oder mehrere Nachrichtenverarbeitungsprogramme gemäß einer Ausführungsform so gestaltet sein, dass sie durch die Speichereinheiten und/oder den Hauptarbeitsspeicher 208 gespeichert werden.
  • Die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Offenbarung können durch die Verarbeitungseinheit 206 unter Verwendung von computernutzbarem Programmcode durchgeführt werden, der sich in einem Arbeitsspeicher wie zum Beispiel dem Hauptarbeitsspeicher 208, dem ROM 224 oder in einer oder mehreren Peripherie-Einheiten 226 und 230 befinden kann.
  • Ein Bussystem wie z.B. der erste Bus 238 oder der zweite Bus 240 aus 2 kann einen oder mehrere Busse aufweisen. Das Bussystem kann unter Verwendung einer beliebigen Art von Datenübertragungsstruktur oder -architektur realisiert werden, die eine Übertragung von Daten zwischen verschiedenen Komponenten oder Einheiten bereitstellt, die mit der Struktur oder Architektur verbunden werden. Eine Datenübertragungseinheit, wie z.B. der Modem 222 oder der Netzwerkadapter 212 aus 2 kann eine oder mehrere Einheiten enthalten, die zum Übertragen und Empfangen von Daten verwendet werden. Ein Arbeitsspeicher kann z.B. der Hauptarbeitsspeicher 208, der ROM 224 oder ein Cache sein, wie er in dem NB/MCH 202 aus 2 vorhanden ist.
  • Der Fachmann weiß, dass die Hardware in den 1 und 2 abhängig von der Realisierung variieren kann und abgewandelt werden kann, ohne vom inhaltlichen Umfang der Ansprüche abzuweichen. Zusätzlich zu oder anstatt der in den 1 und 2 dargestellten Hardware können auch andere interne Hardware- oder Peripherie-Einheiten wie z.B. ein Flash-Arbeitsspeicher, ein gleichwertiger nicht flüchtiger Arbeitsspeicher oder optische Plattenlaufwerke und dergleichen verwendet werden. Außerdem können die Prozesse der veranschaulichenden Ausführungsformen auch auf ein anderes Mehrprozessor-Datenverarbeitungssystem als das oben erwähnte System angewendet werden, ohne vom gedanklichen Wesensgehalt und inhaltlichen Umfang der vorliegenden Offenbarung abzuweichen.
  • Zudem kann das System 200 in Gestalt einer Reihe verschiedener Datenverarbeitungssysteme vorliegen, z.B., ohne darauf beschränkt zu sein, Client-Datenverarbeitungseinheiten, Server-Datenverarbeitungseinheiten, ein Tablet Computer, ein Laptop Computer, ein Telefon oder eine anderweitige Datenübertragungseinheit, ein persönlicher digitaler Assistent (PDA) oder dergleichen. Bei manchen veranschaulichenden Beispielen kann das System 200 eine tragbare Datenverarbeitungseinheit sein, die mit einem Flash-Arbeitsspeicher konfiguriert wird, um nicht flüchtigen Arbeitsspeicher zum Beispiel zum Speichern von Betriebssystemdateien und/oder durch einen Benutzer erzeugten Daten bereitzustellen. Somit kann das System 200 im Wesentlichen jedes bekannte oder künftig entwickelte Datenverarbeitungssystem ohne architektonische Beschränkung sein.
  • Unter Bezugnahme auf 3 wird ein vereinfachtes Blockschaubild einer beispielhaften Ausführungsform eines Systems zum gleichzeitigen Verarbeiten eines zeitlichen Nachrichtendatenstroms dargestellt.
  • Das System weist eine Schnittstelle 310 auf, die konfiguriert wird, um Nachrichten eines Nachrichtendatenstroms zu erhalten, wobei jede Nachricht eine zugehörige Zeitmarke hat. Das System weist des Weiteren eine Warteschlangenkomponente 320 auf, die konfiguriert wird, um jede Nachricht in jeder aus einer Mehrzahl von Warteschlangen 322 zu speichern, wobei die Nachrichten jeder Warteschlange 322 auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an der ersten Stelle in der Warteschlange 322 (d.h. einer First-In-First-Out(FIFO)-Warteschlange) positioniert wird, eine Nachricht PB-1 in einer Warteschlange 322B. Das System weist des Weiteren eine Nachrichtenabrufkomponente 330 auf, die konfiguriert wird, um einen Abruf einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange aus der Mehrzahl der Warteschlangen 322 auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen 322 aus der Mehrzahl der Warteschlangen 322 zu steuern. Die Nachrichtenabrufkomponente 330 kann mit einer Mehrzahl von Konsumenten 332 Daten austauschen, wobei jeder der Konsumenten 332 Nachrichten aus einer entsprechenden Warteschlange 322, abrufen kann, eine Nachricht PA-1 in einem Konsumenten 332A. Obwohl die Konsumenten 332 eine 1:1-Abbildung auf eine Warteschlange haben können, kann ein Konsument 332 Nachrichten von mehr als einer Warteschlange 322 abrufen, und eine Warteschlange 322 kann Nachrichten haben, die durch mehr als einen der Konsumenten 332 abgerufen werden.
  • Bei manchen Ausführungsformen wird die Nachrichtenabrufkomponente 330 des Weiteren konfiguriert, um für jede der anderen Warteschlangen 322 eine Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und der an erster Stelle stehenden Nachricht jeder Warteschlange 322 zu ermitteln. Die Nachrichtenabrufkomponente wird des Weiteren konfiguriert, um aus den ermittelten Zeitdifferenzen den größten Wert einer Zeitdifferenz zu identifizieren und einen Abruf der Zielnachricht aus der Zielwarteschlange 322 auf Grundlage dessen zuzulassen oder abzulehnen, ob der größte Wert einer Zeitdifferenz einen Schwellenwert übersteigt.
  • Bei einer Ausführungsform wird die Nachrichtenabrufkomponente 330 des Weiteren konfiguriert, um einen Abruf der Zielnachricht aus der Zielwarteschlange zuzulassen, wenn der größte Werte einer Zeitdifferenz den Schwellenwert nicht übersteigt, und einen Abruf der Zielnachricht aus der Zielwarteschlange abzulehnen, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt. Bei manchen Ausführungsformen wird die Nachricht mit der frühesten Zeitmarke (oder die Nachricht, die der größten Differenz zugehörig ist) abgerufen, und die Zeitdifferenzen werden neu berechnet. Daraufhin gibt es eine zweitgrößte Differenz oder eine verbleibende größte Differenz. Diese werden auf dieselbe Art und Weise wie die größte Differenz berechnet.
  • Bei einer Ausführungsform wird die Nachrichtenabrufkomponente 330 des Weiteren konfiguriert, um eine Fehlernachricht zu erzeugen, wenn der Abruf der Zielnachricht aus der Warteschlange 322 abgelehnt wird.
  • Bei einer Ausführungsform weist das System des Weiteren eine (nicht gezeigte) Koordinierungskonfigurationskomponente auf, die konfiguriert wird, um ein Eingabesignal zu empfangen, das für eine zeitliche Koordinierungsanforderung steht, und den Schwellenwert auf Grundlage des empfangenen Eingabesignals zu ermitteln. Bei verschiedenen Ausführungsformen ist die Koordinierungskonfigurationskomponente eine Komponente der Schnittstelle 310, der Warteschlangenkomponente 320, der Nachrichtenabrufkomponente 330 und/oder ist hierin eingegliedert, und/oder sie ist eine separate Komponente.
  • Bei manchen Ausführungsformen weist das System des Weiteren eine Zeitkomponente auf, die konfiguriert wird, um für jede Komponente eine Zeitmarke zu erzeugen, die für eine der Nachricht zugehörige Zeit steht, und die erzeugte Zeitmarke der Nachricht zuzuweisen. Zum Beispiel kann eine Zeitmarke für eine Nachricht für die Zeit stehen, zu der die Nachricht erzeugt wird oder mit einem PUT-Befehl in eine Warteschlange gestellt wird. Bei verschiedenen Ausführungsformen ist die Zeitkomponente eine Komponente der Schnittstelle 310, der Warteschlangenkomponente 320, der Nachrichtenabrufkomponente 330 und/oder ist hierin eingegliedert, und/oder sie ist eine separate Komponente.
  • Bei manchen Ausführungsformen bezieht sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen. Die Warteschlangenkomponente 320 wird des Weiteren für jedes aus der Mehrzahl von Themen konfiguriert, um eine oder mehrere der Warteschlangen 322 einem oder mehreren Themen zuzuweisen und jede Nachricht in mindestens einer aus der Mehrzahl der Warteschlangen 322 zu speichern, die dem bzw. den Themen zugehörig sind, auf die sich die Nachricht bezieht.
  • Unter Bezugnahme auf 4 wird ein Ablaufplan eines computerrealisierten Verfahrens zum Verarbeiten eines Nachrichtendatenstroms gemäß einer Ausführungsform dargestellt. Ein solches Verfahren kann ein gleichzeitiges Verarbeiten eines zeitlichen Nachrichtendatenstroms ermöglichen, indem eine Verarbeitungs-Engine skaliert wird, während zugleich eine ungefähre zeitliche Koordinierung des Verarbeitens gewahrt bleibt.
  • Ein Schritt 410 weist ein Erhalten von Nachrichten eines Nachrichtendatenstroms auf, wobei jede Nachricht eine zugehörige Zeitmarke hat. Bei manchen Ausführungsformen enthält der Schritt 410 ein Erzeugen einer Zeitmarke für jede Nachricht.
  • Bei einer Ausführungsform bezieht sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen. Bei manchen Ausführungsformen weist das Verfahren des Weiteren für jedes aus der Mehrzahl von Themen ein Zuweisen von mindestens einem Thema zu jeder Warteschlange auf. Bei manchen Ausführungsformen weist das Verfahren des Weiteren ein Unterteilen des Themas in eine Mehrzahl von Partitionen und ein Zuordnen eines oder mehrerer Konsumenten zu jeder Warteschlange auf.
  • Zum Beispiel kann ein Benutzer in einem Nachrichtensystem ein Thema erzeugen, das fünf Warteschlangen enthält (z.B. Partitionen, Datenströme und/oder Themen). Fünf Konsumenten können dem Thema als Gruppenkonsumenten zugeordnet werden, sodass jeder Warteschlange ein Konsument bereitgestellt wird. Jede Nachricht wird auf Grundlage eines bestimmten Sortierfaktors (z.B. Größe, Inhalt, Ursprungsort, Datentyp, Umlauf, Zufall usw.) an eine der Warteschlangen verteilt. Jeder Konsument verarbeitet Nachrichten entsprechend seiner jeweiligen Warteschlange, sobald sie aus der Warteschlange abgerufen wurden. Dieses Beispiel wird in 3 dargestellt, wobei die fünf Warteschlangen 322A, 322B, 322C, 322D, 322E und die fünf zugeordneten Konsumenten 332A, 332B, 332C, 332D, 332E die Nachrichten PA-1, PA-2, PA-3 für die Warteschlange 322A, PB-1 für die Warteschlange 322B und PC-1 für die Warteschlange 322C verarbeiten. 5 stellt eine grafische Darstellung der Schritte dar, die an diesem Beispiel beteiligt sind, wobei die vertikale Achse jede aus der Mehrzahl von Warteschlangen beschreibt und die horizontale Achse die Zeit der Zeitmarke beschreibt, die einer Nachricht entspricht. Das unten beschriebene Beispiel bezieht sich auf die in 3 und 5 dargestellten Informationen.
  • Ein Schritt 420 weist ein Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen auf, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an der ersten Stelle in der Warteschlange platziert wird. Hier wird jede Nachricht in mindestens einer der Warteschlangen gespeichert, die dem bzw. den Themen zugehörig sind, auf die sich die Nachricht bezieht.
  • Ein Schritt 430 weist ein Steuern eines Abrufs einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Nachricht und den Zeitmarken der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen auf. In dem Beispiel können die Nachrichten an die Konsumenten gleichmäßig aus der Mehrzahl von Warteschlangen und nacheinander aus jeder der Mehrzahl von Warteschlangen abgerufen werden.
  • Bei einer Ausführungsform kann ein Steuern eines Abrufs für jede der anderen Warteschlangen ein Ermitteln einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aufweisen. Ein Steuern eines Abrufs kann dann ein Identifizieren des größten Werts einer Zeitdifferenz aus den ermittelten Zeitdifferenzen und ein anschließendes Zulassen eines Abrufs der Zielnachricht aus der Zielwarteschlange auf Grundlage dessen aufweisen, ob der größte Wert einer Zeitdifferenz einen Schwellenwert übersteigt.
  • In dem Beispiel kann der Benutzer einen Schwellenwert von 100 ms definieren, der auch als eine zeitliche Koordinierung bezeichnet werden kann. Allerdings kann der Schwellenwert auch mehr oder weniger als 100 ms betragen. Zum Beispiel kann eine erste Warteschlange 322A aus den fünf Warteschlangen eine Nachricht erhalten, die ein vergleichsweise großes Ereignis enthält, das Ereignis PA-1, mit einer Zeitmarke von 20:00:00,000 und einer Verarbeitungsdauer von 200 ms. Die dem Ereignis PA-1 entsprechende Nachricht wird durch den Konsumenten 332A abgerufen, welcher der ersten Warteschlange entspricht. Die nächste Nachricht in der ersten Warteschlange 322A kann ein weiteres Ereignis, das Ereignis PA-2, mit einer Zeitmarke von 20:00:00,100 enthalten. Der Konsument 332B, welcher der nächsten darauffolgenden Warteschlange, d.h. einer zweiten Warteschlange 322B, entspricht, kann versuchen, das nächste Ereignis aus der an erster Stelle stehenden Nachricht der zweiten Warteschlange 322B abzurufen, z.B. das Ereignis PB-1 mit einer Zeitmarke von 20:00:00,190. Die Zeitmarken eines jeden Ereignisses, die Nachrichten an der ersten Stelle in jeder Warteschlange entsprechen, können ermittelt werden.
  • Bei einer Ausführungsform wird ein Abruf der Zielnachricht aus der Zielwarteschlange zugelassen, wenn der größte Werte einer Zeitdifferenz den Schwellenwert nicht übersteigt, und ein Abruf der Zielnachricht aus der Zielwarteschlange wird abgelehnt, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt. Wenn eine Nachricht abgerufen wird, werden auf diese Weise die Zeitmarken an der ersten Stelle in jeder Warteschlange miteinander verglichen. Wenn der Wert einer Zeitdifferenz zwischen einer frühesten Zeitmarke über alle Warteschlangen hinweg der Zeitmarke, die einer Zielnachricht in einer Zielwarteschlange entspricht, wird die Nachricht abgerufen, die der frühesten Zeitmarke entspricht.
  • In dem Beispiel beträgt die Zeitdifferenz zwischen der dem Ereignis PB-1 entsprechenden Zeitmarke (20:00:00,190) und der dem Ereignis PA-1 entsprechenden Zeitmarke (20:00:00,100) 90 ms, was den Schwellenwert von 100 ms nicht übersteigt. Dies wird erhalten, indem die Zeitmarke der an vorderster Stelle stehenden Nachricht von der Zeitmarke der Zielnachricht subtrahiert wird (z.B. (Zielnachricht-Zeitmarke) - (erste Nachricht einer anderen Warteschlange), 20:00:00,190 - 20:00:00,100). Auf diese Weise kann die Nachricht, die das Ereignis PB-1 enthält, durch den Konsumenten 332B abgerufen werden, welcher der Zielwarteschlange entspricht, in diesem Fall der zweiten Warteschlange 322B.
  • Bei einer Ausführungsform weist ein Zulassen eines Abrufs der Zielnachricht des Weiteren ein Erzeugen einer Fehlernachricht auf, wenn der Abruf der Zielnachricht aus der Zielwarteschlange abgelehnt wird. Die Fehlernachricht kann einen Rückgabecode oder eine Nachricht aufweisen, der bzw. die angibt, dass die Ausgabedaten nicht synchron sind. Wenn der Abruf der Zielnachricht aus der Zielwarteschlange abgelehnt wird, kann der Prozess vorübergehend angehalten werden, bis die Zeitmarken, die den Nachrichten an der ersten Stelle in jeder Warteschlange entsprechen, eine entsprechende Zeitdifferenz gestatten, die den Schwellenwert nicht übersteigt.
  • Ein Steuern eines Abrufs kann des Weiteren ein Empfangen eines Eingabesignals, das für eine zeitliche Koordinierungsanforderung steht, und ein anschließendes Ermitteln des Schwellenwerts auf Grundlage des empfangenen Eingabesignals aufweisen.
  • In dem Beispiel kann eine Nachricht aus der nächsten darauffolgenden Warteschlange, eine dritte Warteschlange 322C, ein weiteres Ereignis, das Ereignis PC-1, mit einer Zeitmarke von 20:00:00,250 enthalten. Die Zeitmarken eines jeden Ereignisses, die Nachrichten an der ersten Stelle in jeder Warteschlange entsprechen, können ermittelt werden. Zu diesem Zeitpunkt ist die dem Ereignis PA-2 entsprechende Zeitmarke die früheste, wobei die Zeitdifferenz zwischen der dem Ereignis PA-2 entsprechenden Zeitmarke (20:00:00,100) und der dem Ereignis PC-1 entsprechenden Zeitmarke (20:00:00,250) 150 ms beträgt, was den Schwellenwert von 100 ms übersteigt. Somit wird die Anforderung eines Abrufs aus der Warteschlange 322C abgelehnt, und das Ereignis PC-1 wird nicht abgerufen. Wenn hingegen PA-2 die Zielnachricht ist, ist die Differenz von 150 ms negativ, was weniger als der Schwellenwert von 100 ms ist, sodass PA-2 abgerufen werden kann.
  • Das Verarbeiten der Nachricht, die dem Ereignis PA-1 entspricht, ist abgeschlossen, und die Nachricht, die dem nächsten Ereignis in der ersten Warteschlange 322A entspricht, dem Ereignis PA-2, wird abgerufen. Eine Nachricht aus der ersten Warteschlange 322A kann ein weiteres Ereignis, z. B. das Ereignis PA-3, mit einer Zeitmarke von 20:00:00,180 enthalten. Die Zeitmarken eines jeden Ereignisses, die Nachrichten an der ersten Stelle in jeder Warteschlange entsprechen, können ermittelt werden. Die Zeitdifferenz zwischen der dem Ereignis PC-1 entsprechenden Zeitmarke (20:00:00,250) und der dem Ereignis PA-3 entsprechenden Zeitmarke (20:00:00,180) beträgt 70 ms, was den Schwellenwert von 100 ms nicht übersteigt. Hierdurch kann die Nachricht, die das Ereignis PC-1 enthält, durch den Konsumenten 332C abgerufen werden, welcher der Zielwarteschlange entspricht, in diesem Fall der dritten Warteschlange 322C.
  • Bei manchen Ausführungsformen wird der Schwellenwert dynamisch ermittelt. Er kann auf der Anzahl von Nachrichten in den Warteschlangen, der relativen Verarbeitungszeit der Nachrichten in den Warteschlangen, den Zeitdifferenzen zwischen den Zeitmarken der Nachrichten und/oder beliebigen anderen, ähnlichen Faktoren beruhen. Zum Beispiel kann der Schwellenwert der Durchschnitt von Differenzen zwischen der Zeitmarke der ersten und zweiten Nachricht in jeder Warteschlange sein. In einem weiteren Beispiel kann der Schwellenwert die Nachricht mit der längsten Verarbeitungszeit (z.B. 00:00,100) in einer beliebigen Warteschlange plus eine vorgegebene Zeitdauer sein (z.B. x + 00:00,150). Wenn die längste Verarbeitungszeit für eine Nachricht in den Warteschlangen 00:00,100 beträgt, wäre der Schwellenwert somit 00:00,250.
  • Das obige Beispiel kann erweitert werden, um mehr als ein Thema (und in der Folge die entsprechenden Warteschlangen) zu einer Gruppe zusammenzufassen. Bei dieser Ausführungsform kann jede Gruppe einen Bezeichner erhalten, um Konsumenten zwischen jedem Thema zu korrelieren.
  • Wie in 6 veranschaulicht wird, können Ausführungsformen in einem weiteren Beispiel ein Computersystem 70 aufweisen, das Teil eines vernetzten Systems 7 sein kann. Ohne hierauf beschränkt zu sein, können die Komponenten des Computersystems/Servers 70 eine oder mehrere Verarbeitungsanordnungen enthalten, die zum Beispiel Prozessoren oder Verarbeitungseinheiten 71, einen Systemarbeitsspeicher 74 und einen Bus 90 aufweisen, der verschiedene Systemkomponenten wie z.B. den Systemarbeitsspeicher 74 mit der Verarbeitungseinheit 71 verbindet.
  • Die Verarbeitungseinheit 71 wird konfiguriert, um einen Zielobjekttyp zu definieren; der Zielobjekttyp ist so gestaltet, dass er Ergebnisse einer Middleware-Funktion enthält. Des Weiteren wird die Verarbeitungseinheit 71 konfiguriert, um ein erstes Objekt für eine Anwendung zu empfangen und anschließend einen Prozess der Middleware-Funktion unter Verwendung des ersten Objekts durchzuführen, um ein Prozessergebnis zu erzeugen. Die Verarbeitungseinheit 71 wird konfiguriert, um auf Grundlage des Prozessergebnisses ein zweites Objekt des Zielobjekttyps zu erzeugen und das zweite Objekt der Anwendung bereitzustellen.
  • Der Bus 90 steht für mindestens eine von beliebigen mehreren Arten von Busstrukturen, z.B. ein Arbeitsspeicherbus oder ein Arbeitsspeicher-Controller, ein Peripheriebus, ein Accelerated Graphics Port (AGP) und ein Prozessor- oder lokaler Bus, wobei eine beliebige aus einer Vielfalt von Busarchitekturen verwendet werden kann. Beispielhaft und nicht als Beschränkung zu verstehen, enthalten derartige Architekturen den ISA-Bus (Industry Standard Architecture), den MCA-Bus (Micro Channel Architecture), den EISA-Bus (Enhanced ISA), den lokalen VESA-Bus (Video Electronics Standards Association) und den PCI-Bus (Peripheral Component Interconnect).
  • Das Computersystem/der Server 70 enthält üblicherweise eine Vielfalt von Medien, die durch ein Computersystem lesbar sind. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 70 zugreifen kann, und sowohl flüchtige als auch nicht flüchtige, entfernbare als auch nicht entfernbare Medien enthalten.
  • Der Systemarbeitsspeicher 74 kann ein durch ein Computersystem lesbares Medium in Form eines flüchtigen Arbeitsspeichers wie z.B. eines Direktzugriffsspeichers 75 (Random Access Memory, RAM) und/oder eines Cache-Arbeitsspeichers 76 enthalten. Das Computersystem/der Server 70 kann des Weiteren andere entfernbare/nicht entfernbare, flüchtige/nicht flüchtige Computersystem-Speichermedien enthalten. Nur um ein Beispiel zu geben, kann der Systemspeicher 74 zum Lesen von und Schreiben auf ein nicht entfernbares, nicht flüchtiges magnetisches Medium bereitgestellt werden (das nicht gezeigt ist und üblicherweise als eine „Festplatte“ bezeichnet wird). Obwohl hier nicht abgebildet, können ein Magnetplattenlaufwerk zum Lesen von einer und Schreiben auf eine entfernbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) sowie ein optisches Plattenlaufwerk zum Lesen von einer oder Schreiben auf eine entfernbare, nicht flüchtige optische Platte, z.B. ein CD-ROM, ein DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. In diesen Fällen kann jedes Laufwerk über eine oder mehrere Datenmedienschnittstellen mit dem Bus 90 verbunden werden. Wie weiter unten ausführlicher dargestellt und beschrieben wird, kann der Arbeitsspeicher 74 mindestens ein Programmprodukt mit einem Satz von (z.B. mindestens einem) Programmmodulen enthalten, die konfiguriert werden, um die Funktionen von Ausführungsformen der Offenbarung durchzuführen.
  • Ein Programm/Dienstprogramm 78 mit einem Satz von (mindestens einem) Programmmodulen 79 kann z.B., und ohne als Beschränkung verstanden zu werden, in dem Arbeitsspeicher 74 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, die anderen Programmmodule und die Programmdaten oder eine Kombination hiervon können jeweils eine Realisierung einer Netzwerkumgebung enthalten. Die Programmmodule 79 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von Ausführungsformen der hier beschriebenen Offenbarung aus.
  • Das Computersystem/der Server 70 kann zudem Daten mit einer oder mehreren externen Einheiten 80 austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 85 usw.; mit einer oder mehreren Einheiten, die einem Benutzer gestatten, mit dem Computersystem/Server 70 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 70 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Eine derartige Datenübertragung kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 72 erfolgen. Des Weiteren kann das Computersystem/der Server 70 über einen Netzwerkadapter 73 mit einem oder mehreren Netzwerken Daten austauschen, z.B. mit einem lokalen Netzwerk (LAN), einem Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet). Wie dargestellt, tauscht der Netzwerkadapter 73 über den Bus 90 Daten mit den anderen Komponenten des Computersystems/Servers 70 aus. Dabei sollte klar sein, dass - obwohl sie hier nicht abgebildet sind - auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 70 verwendet werden könnten. Beispiele hierfür sind, ohne darauf beschränkt zu sein, Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerksstapel, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
  • Wenn Ausführungsformen der vorliegenden Offenbarung ein Verfahren darstellen, sollte in Zusammenhang mit der vorliegenden Anmeldung klar sein, dass ein derartiges Verfahren ein Prozess zur Ausführung durch einen Computer ist, d.h. ein computerrealisierbares Verfahren. Die verschiedenen Schritte des Verfahrens spiegeln somit verschiedene Teile eines Computerprogramms wider, z.B. verschiedene Teile eines oder mehrerer Algorithmen.
  • Bei der vorliegenden Offenbarung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit computerlesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Offenbarung auszuführen.
  • Bei dem computerlesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit behalten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des computerlesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein RAM, ein ROM, ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Arbeitsspeicher), ein SCM (Storage Class Memory), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD (Digital Versatile Disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein computerlesbares Speichermedium soll in der Verwendung hierin nicht als transitorische Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene computerlesbare Programmanweisungen können von einem computerlesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei computerlesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Offenbarung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, Field Programmable Gate Arrays) oder programmierbare Logikanordnungen (PLA, Programmable Logic Arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Offenbarung durchzuführen.
  • Aspekte der vorliegenden Offenbarung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels computerlesbarer Programmanweisungen ausgeführt werden können.
  • Diese computerlesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Schritte erzeugen. Diese computerlesbaren Programmanweisungen können auch auf einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das computerlesbare Speichermedium, auf dem Anweisungen gespeichert werden, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der bzw. des in dem Block bzw. den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die computerlesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen computerrealisierten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion bzw. Funktionen aufweisen. Bei manchen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurden zum Zwecke der Veranschaulichung vorgelegt und sind nicht als vollständig oder auf die offenbarten Ausführungsformen beschränkt zu verstehen. Der Fachmann weiß, dass zahlreiche Modifikationen und Abwandlungen möglich sind, ohne vom inhaltlichen Umfang und gedanklichen Wesensgehalt der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Begrifflichkeit wurde gewählt, um die Grundsätze der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber marktgängigen Technologien bestmöglich zu erläutern bzw. anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • Zusammenfassend wurden verschiedene Ausführungsformen erörtert, die wiederum in den folgenden nummerierten Beispielen spezifiziert werden:
  • Beispiel 1 lautet wie folgt. Ein computerrealisiertes Verfahren zum Verarbeiten eines Nachrichtendatenstroms, wobei das Verfahren aufweist: Erhalten von Nachrichten eines Nachrichtendatenstroms, wobei jede Nachricht eine zugehörige Zeitmarke hat; Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; und Steuern eines Abrufs einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken einer an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen, die nicht die Zielwarteschlangen enthalten.
  • Beispiel 2 lautet wie folgt. Das Verfahren gemäß Beispiel 1, wobei das Steuern des Abrufs aufweist: für jede der anderen Warteschlangen Ermitteln einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und einer an erster Stelle stehenden Nachricht der Warteschlange; Identifizieren eines größten Werts einer Zeitdifferenz aus den ermittelten Zeitdifferenzen; und Zulassen eines Abrufs der Zielnachricht aus der Zielwarteschlange auf Grundlage dessen, ob der größte Wert einer Zeitdifferenz einen Schwellenwert übersteigt.
  • Beispiel 3 lautet wie folgt. Das Verfahren gemäß den Beispielen 1 oder 2, wobei ein Zulassen eines Abrufs der Zielnachricht aufweist: Zulassen eines Abrufs der Zielnachricht aus der Zielwarteschlange, wenn der größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
  • Beispiel 4 lautet wie folgt. Das Verfahren gemäß einem beliebigen der vorangegangenen Beispiele, des Weiteren aufweisend: Ablehnen eines Abrufs der Nachricht aus der Zielwarteschlange, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt; und Erzeugen einer Fehlernachricht als Reaktion darauf, dass der Abruf der Nachricht aus der Zielwarteschlange abgelehnt wird.
  • Beispiel 5 lautet wie folgt. Das Verfahren gemäß einem beliebigen der vorangegangenen Beispiele, des Weiteren aufweisend: Erzeugen einer Fehlernachricht als Reaktion darauf, dass der Abruf der Nachricht aus der Zielwarteschlange abgelehnt wird.
  • Beispiel 6 lautet wie folgt. Das Verfahren gemäß einem beliebigen der vorangegangenen Beispiele, des Weiteren aufweisend: Verzögern eines abgelehnten Abrufs der Nachricht aus der Zielwarteschlange.
  • Beispiel 7 lautet wie folgt. Das Verfahren gemäß einem beliebigen der vorangegangenen Beispiele, des Weiteren aufweisend: Ermitteln, dass sich die dem längsten Wert zugehörige Nachricht nicht mehr in ihrer zugehörigen Warteschlange befindet; Identifizieren eines verbleibenden größten Werts von Zeitdifferenzen aus den ermittelten Zeitdifferenzen; und Zulassen eines Abrufs der Zielnachricht aus der Zielwarteschlange, wenn der verbleibende größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
  • Beispiel 8 lautet wie folgt. Das Verfahren gemäß einem beliebigen der vorangegangenen Beispiele, des Weiteren aufweisend: Empfangen eines Eingabesignals, das für eine zeitliche Koordinierungsanforderung steht, und Ermitteln des Schwellenwerts auf Grundlage des empfangenen Eingabesignals.
  • Beispiel 9 lautet wie folgt. Das Verfahren gemäß einem beliebigen der vorangegangenen Beispiele, wobei der Schwellenwert gleich einem Durchschnitt der ersten Nachricht und einer zweiten Nachricht in jeder Warteschlange ist.
  • Beispiel 10 lautet wie folgt. Das Verfahren gemäß einem beliebigen der vorangegangenen Beispiele, des Weiteren aufweisend: für jede erhaltene Komponente Erzeugen einer Zeitmarke, die für eine der Nachricht zugehörige Zeit steht; und Zuweisen der erzeugten Zeitmarke zu der Nachricht.
  • Beispiel 11 lautet wie folgt. Das Verfahren gemäß einem beliebigen der vorangegangenen Beispiele, wobei: sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen bezieht; das Verfahren des Weiteren für jedes aus der Mehrzahl von Themen ein Definieren einer Mehrzahl von Warteschlangen aufweist, die mindestens einem Thema zugehörig sind; und wobei das Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen aufweist: Speichern jeder Nachricht in mindestens einer aus der Mehrzahl von Warteschlangen, die dem bzw. den Themen zugehörig sind, auf die sich die Nachricht bezieht.
  • Beispiel 12 lautet wie folgt. Ein Computerprogrammprodukt zum Verarbeiten eines Nachrichtendatenstroms, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darauf enthaltenen Programmanweisungen aufweist, wobei die Programmanweisungen durch eine Verarbeitungseinheit ausführbar sind, um die Verarbeitungseinheit zu veranlassen: Nachrichten eines Nachrichtendatenstroms zu erhalten, wobei jede Nachricht eine zugehörige Zeitmarke hat; jede Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen zu speichern, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; und einen Abruf einer Zielnachricht aus einer ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen zu steuern.
  • Beispiel 13 lautet wie folgt. Das Computerprogrammprodukt gemäß Beispiel 12, wobei die Programmanweisungen des Weiteren konfiguriert werden, um die Verarbeitungseinheit zu veranlassen: für jede der anderen Warteschlangen eine Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und einer an erster Stelle stehenden Nachricht jeder Warteschlange zu ermitteln; und aus den ermittelten Zeitdifferenzen einen größten Wert einer Zeitdifferenz zu identifizieren.
  • Beispiel 14 lautet wie folgt. Das Computerprogrammprodukt gemäß den Beispielen 12 oder 13, wobei die Programmanweisungen des Weiteren konfiguriert werden, um die Verarbeitungseinheit zu veranlassen: einen Abruf der Zielnachricht aus der Zielwarteschlange zuzulassen, wenn der größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
  • Beispiel 15 lautet wie folgt. Das Computerprogrammprodukt gemäß einem beliebigen der Beispiele 12 bis 14, wobei die Programmanweisungen des Weiteren konfiguriert werden, um die Verarbeitungseinheit zu veranlassen: einen Abruf der Nachricht aus der Zielwarteschlange abzulehnen, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt; und als Reaktion darauf, dass der Abruf der Nachricht aus der Zielwarteschlange abgelehnt wird, eine Fehlernachricht zu erzeugen.
  • Beispiel 16 lautet wie folgt. Ein System zum Verarbeiten eines Nachrichtendatenstroms, wobei das System aufweist: eine Schnittstelle, die konfiguriert wird, um Nachrichten eines Nachrichtendatenstroms zu erhalten, wobei jede Nachricht eine zugehörige Zeitmarke hat; eine Warteschlangenkomponente, die konfiguriert wird, um jede Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen zu speichern, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; und eine Nachrichtenabrufkomponente, die konfiguriert wird, um einen Abruf einer Zielnachricht aus einer ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken einer an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen zu steuern, die nicht die Zielwarteschlange sind.
  • Beispiel 17 lautet wie folgt. Das System gemäß Beispiel 16, wobei die Nachrichtenabrufkomponente konfiguriert wird, um: für jede der anderen Warteschlangen eine Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und der an erster Stelle stehenden Nachricht der Warteschlange zu ermitteln; aus den ermittelten Zeitdifferenzen den größten Wert einer Zeitdifferenz zu identifizieren; und einen Abruf der Zielnachricht aus der angeforderten Warteschlange auf Grundlage dessen zuzulassen, ob der größte Wert einer Zeitdifferenz einen Schwellenwert übersteigt.
  • Beispiel 18 lautet wie folgt. Das System gemäß den Beispielen 16 oder 17, wobei die Nachrichtenabrufkomponente des Weiteren konfiguriert wird, um: einen Abruf der Zielnachricht aus der angeforderten Warteschlange zuzulassen, wenn der größte Wert einer Zeitdifferenz den Schwellenwert nicht übersteigt.
  • Beispiel 19 lautet wie folgt. Das System gemäß einem beliebigen der Beispiele 16 bis 18, wobei die Nachrichtenabrufkomponente des Weiteren konfiguriert wird, um als Reaktion darauf, dass ein Abruf der Zielnachricht aus der angeforderten Warteschlange abgelehnt wird, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt, eine Fehlermeldung zu erzeugen.
  • Beispiel 20 lautet wie folgt. Das System gemäß einem beliebigen der Beispiele 16 bis 19, des Weiteren aufweisend: eine Koordinierungskonfigurationskomponente, die konfiguriert wird, um ein Eingabesignal zu empfangen, das für eine zeitliche Koordinierungsanforderung steht, und den Schwellenwert auf Grundlage des empfangenen Eingabesignals zu ermitteln.
  • Beispiel 21 lautet wie folgt. Das System gemäß einem beliebigen der Beispiele 16 bis 20, des Weiteren aufweisend: eine Zeitkomponente, die konfiguriert wird, um für jede erhaltene Komponente eine Zeitmarke zu erzeugen, die für eine der Nachricht zugehörige Zeit steht, und die erzeugte Zeitmarke jeder Nachricht zuzuweisen.
  • Beispiel 22 lautet wie folgt. Das System gemäß einem beliebigen der Beispiele 16 bis 21, wobei sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen bezieht, wobei die Warteschlangenkomponente des Weiteren konfiguriert wird, um für jedes aus der Mehrzahl von Themen eine Mehrzahl von Warteschlangen zu definieren, die dem Thema zugehörig sind; und wobei die Warteschlangenkomponente des Weiteren konfiguriert wird, um jede Nachricht in jeder aus der Mehrzahl von Warteschlangen zu speichern, die dem bzw. den Themen zugehörig sind, auf die sich die Nachricht bezieht.
  • Beispiel 23 lautet wie folgt. Das System gemäß einem beliebigen der Beispiele 16 bis 22, wobei ein Benutzer den Schwellenwert definiert.
  • Beispiel 24 lautet wie folgt. Ein computerrealisiertes Verfahren zum Verarbeiten eines Nachrichtendatenstroms, wobei das Verfahren aufweist: Erhalten von Nachrichten eines Nachrichtendatenstroms, wobei jede Nachricht eine zugehörige Zeitmarke hat, wobei sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen bezieht; Definieren einer Mehrzahl von Warteschlangen, die mindestens einem Thema zugehörig sind; und Speichern jeder Nachricht in mindestens einer aus der Mehrzahl von Warteschlangen, die dem mindestens einen Thema zugehörig sind, auf das sich jede Nachricht bezieht; Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; Erzeugen einer Zeitmarke, die für eine der Nachricht zugehörige Zeit steht; Zuweisen der erzeugten Zeitmarke zu der Nachricht; Steuern eines Abrufs einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken einer an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen, die nicht die Zielwarteschlange enthalten; für jede der anderen Warteschlangen Ermitteln einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und einer an erster Stelle stehenden Nachricht der Warteschlange; Identifizieren eines größten Werts einer Zeitdifferenz aus den ermittelten Zeitdifferenzen; Empfangen eines Eingabesignals, das für eine zeitliche Koordinierungsanforderung steht; Ermitteln des Schwellenwerts auf Grundlage des empfangenen Eingabesignals; und Zulassen eines Abrufs der Zielnachricht aus der Zielwarteschlange als Reaktion darauf, dass der größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
  • Beispiel 25 lautet wie folgt. Ein System, aufweisend: einen Prozessor; und ein computerlesbares Speichermedium, das mit dem Prozessor kommunikativ gekoppelt wird und Programmanweisungen speichert, die bei Ausführung durch den Prozessor konfiguriert werden, um den Prozessor zu veranlassen: Nachrichten eines Nachrichtendatenstroms zu empfangen, wobei jede Nachricht eine zugehörige Zeitmarke hat, wobei sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen bezieht; eine Mehrzahl von Warteschlangen zu definieren, die mindestens einem Thema zugehörig sind; jede Nachricht in mindestens einer aus der Mehrzahl von Warteschlangen zu speichern, die dem mindestens einen Thema zugehörig sind, auf das sich jede Nachricht bezieht; jede Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen zu speichern, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; eine Zeitmarke zu erzeugen, die für eine der Nachricht zugehörige Zeit steht; die erzeugte Zeitmarke der Nachricht zuzuweisen; einen Abruf einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken einer an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen zu steuern, die nicht die Zielwarteschlange enthalten; für jede der anderen Warteschlangen eine Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und einer an erster Stelle stehenden Nachricht der Warteschlange zu ermitteln; aus den ermittelten Zeitdifferenzen einen größten Wert einer Zeitdifferenz zu identifizieren; ein Eingabesignal zu empfangen, das für eine zeitliche Koordinierungsanforderung steht; auf Grundlage des empfangenen Eingabesignals den Schwellenwert zu ermitteln; einen abgelehnten Abruf der Nachricht aus der Zielwarteschlange zu verzögern; zu ermitteln, dass sich die dem längsten Wert zugehörige Nachricht nicht mehr in ihrer zugehörigen Warteschlange befindet; aus den ermittelten Zeitdifferenzen einen verbleibenden größten Wert von Zeitdifferenzen zu identifizieren; und einen Abruf der Zielnachricht aus der Zielwarteschlange zuzulassen, wenn der verbleibende größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.

Claims (25)

  1. Computerrealisiertes Verfahren zum Verarbeiten eines Nachrichtendatenstroms, wobei das Verfahren aufweist: Erhalten von Nachrichten eines Nachrichtendatenstroms, wobei jede Nachricht eine zugehörige Zeitmarke aufweist; Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; und Steuern eines Abrufes einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken einer an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen, welche die Zielwarteschlange nicht enthalten.
  2. Verfahren nach Anspruch 1, wobei das Steuern des Abrufs aufweist: für jede der anderen Warteschlangen Ermitteln einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und einer an erster Stelle stehenden Nachricht der Warteschlange; Identifizieren eines größten Wertes einer Zeitdifferenz aus den ermittelten Zeitdifferenzen; und Zulassen eines Abrufes der Zielnachricht aus der Zielwarteschlange auf Grundlage dessen, ob der größte Wert einer Zeitdifferenz einen Schwellenwert übersteigt.
  3. Verfahren nach Anspruch 2, wobei ein Zulassen eines Abrufes der Zielnachricht aufweist: Zulassen eines Abrufes der Zielnachricht aus der Zielwarteschlange, wenn der größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
  4. Verfahren nach Anspruch 2, des Weiteren aufweisend: Ablehnen eines Abrufes der Nachricht aus der Zielwarteschlange, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt; und Erzeugen einer Fehlernachricht als Reaktion darauf, dass der Abruf der Nachricht aus der Zielwarteschlange abgelehnt wird.
  5. Verfahren nach Anspruch 4, des Weiteren aufweisend: Erzeugen einer Fehlernachricht als Reaktion darauf, dass der Abruf der Nachricht aus der Zielwarteschlange abgelehnt wird.
  6. Verfahren nach Anspruch 2, des Weiteren aufweisend: Verzögern eines abgelehnten Abrufes der Nachricht aus der Zielwarteschlange.
  7. Verfahren nach Anspruch 6, des Weiteren aufweisend: Ermitteln, dass sich die dem längsten Wert zugehörige Nachricht nicht mehr in ihrer zugehörigen Warteschlange befindet; Identifizieren eines verbleibenden größten Wertes von Zeitdifferenzen aus den ermittelten Zeitdifferenzen; und Zulassen eines Abrufes der Zielnachricht aus der Zielwarteschlange, wenn der verbleibende größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
  8. Verfahren nach Anspruch 2, des Weiteren aufweisend: Empfangen eines Eingabesignals, das für eine zeitliche Koordinierungsanforderung steht; und Ermitteln des Schwellenwerts auf Grundlage des empfangenen Eingabesignals.
  9. Verfahren nach Anspruch 2, wobei der Schwellenwert gleich einem Durchschnitt der ersten Nachricht und einer zweiten Nachricht in jeder Warteschlange ist.
  10. Verfahren nach Anspruch 1, des Weiteren für jede erhaltene Nachricht aufweisend: Erzeugen einer Zeitmarke, die für eine der Nachricht zugehörige Zeit steht; und Zuweisen der erzeugten Zeitmarke zu der Nachricht.
  11. Verfahren nach Anspruch 1, wobei: sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen bezieht; wobei das Verfahren des Weiteren für jedes aus der Mehrzahl von Themen ein Definieren einer Mehrzahl von Warteschlangen aufweist, die mindestens einem Thema zugehörig sind; und wobei das Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen aufweist: Speichern jeder Nachricht in mindestens einer aus der Mehrzahl von Warteschlangen, die dem/den Theme(n) zugehörig sind, auf die sich die Nachricht bezieht.
  12. Computerprogrammprodukt zum Verarbeiten eines Nachrichtendatenstroms, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darauf enthaltenen Programmanweisungen aufweist, wobei die Programmanweisungen durch eine Verarbeitungseinheit ausführbar sind, um die Verarbeitungseinheit zu veranlassen: Nachrichten eines Nachrichtendatenstroms zu erhalten, wobei jede Nachricht eine zugehörige Zeitmarke aufweist; jede Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen zu speichern, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; und einen Abruf einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken der an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen zu steuern.
  13. Computerprogrammprodukt nach Anspruch 12, wobei die Programmanweisungen des Weiteren konfiguriert werden, um die Verarbeitungseinheit zu veranlassen: für jede der anderen Warteschlangen eine Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und einer an erster Stelle stehenden Nachricht jeder Warteschlange zu ermitteln; und aus den ermittelten Zeitdifferenzen einen größten Wert einer Zeitdifferenz zu identifizieren.
  14. Computerprogrammprodukt nach Anspruch 13, wobei die Programmanweisungen des Weiteren konfiguriert werden, um die Verarbeitungseinheit zu veranlassen: einen Abruf der Zielnachricht aus der Zielwarteschlange zuzulassen, wenn der größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
  15. Computerprogrammprodukt nach Anspruch 13, wobei die Programmanweisungen des Weiteren konfiguriert werden, um die Verarbeitungseinheit zu veranlassen: einen Abruf der Nachricht aus der Zielwarteschlange abzulehnen, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt; und als Reaktion darauf, dass der Abruf der Nachricht aus der Zielwarteschlange abgelehnt wird, eine Fehlernachricht zu erzeugen.
  16. System zum Verarbeiten eines Nachrichtendatenstroms, wobei das System aufweist: eine Schnittstelle, die konfiguriert wird, um Nachrichten eines Nachrichtendatenstroms zu erhalten, wobei jede Nachricht eine zugehörige Zeitmarke aufweist; eine Warteschlangenkomponente, die konfiguriert wird, um jede Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen zu speichern, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; und eine Nachrichtenabrufkomponente, die konfiguriert wird, um einen Abruf einer Zielnachricht aus einer ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken einer an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen zu steuern, die nicht die Zielwarteschlange sind.
  17. System nach Anspruch 16, wobei die Nachrichtenabrufkomponente des Weiteren konfiguriert wird, um für jede der anderen Warteschlangen eine Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und der an erster Stelle stehenden Nachricht der Warteschlange zu ermitteln; aus den ermittelten Zeitdifferenzen den größten Wert einer Zeitdifferenz zu identifizieren; und einen Abruf der Zielnachricht aus der angeforderten Warteschlange auf Grundlage dessen zuzulassen, ob der größte Wert einer Zeitdifferenz einen Schwellenwert übersteigt.
  18. System nach Anspruch 17, wobei die Nachrichtenabrufkomponente des Weiteren konfiguriert wird, um einen Abruf der Zielnachricht aus der angeforderten Warteschlange auf Grundlage dessen zuzulassen, ob der größte Wert einer Zeitdifferenz den Schwellenwert nicht übersteigt.
  19. System nach Anspruch 18, wobei die Nachrichtenabrufkomponente des Weiteren konfiguriert wird, um als Reaktion darauf, dass ein Abruf der Zielnachricht aus der angeforderten Warteschlange abgelehnt wird, wenn der größte Wert einer Zeitdifferenz den Schwellenwert übersteigt, eine Fehlermeldung zu erzeugen.
  20. System nach Anspruch 18, des Weiteren aufweisend: eine Koordinierungskonfigurationskomponente, die konfiguriert wird, um ein Eingabesignal zu empfangen, das für eine zeitliche Koordinierungsanforderung steht, und den Schwellenwert auf Grundlage des empfangenen Eingabesignals zu ermitteln.
  21. System nach Anspruch 16, des Weiteren aufweisend: eine Zeitkomponente, die konfiguriert wird, um für jede erhaltene Komponente eine Zeitmarke zu erzeugen, die für eine der Nachricht zugehörige Zeit steht, und die erzeugte Zeitmarke jeder Nachricht zuzuweisen.
  22. System nach Anspruch 16, wobei sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen bezieht, wobei die Warteschlangenkomponente des Weiteren konfiguriert wird, um für jedes aus der Mehrzahl von Themen eine Mehrzahl von Warteschlangen zu definieren, die dem Thema zugehörig sind; und wobei die Warteschlangenkomponente des Weiteren konfiguriert wird, um jede Nachricht in jeder aus der Mehrzahl von Warteschlangen zu speichern, die dem bzw. den Themen zugehörig sind, auf die sich die Nachricht bezieht.
  23. System nach Anspruch 17, wobei ein Benutzer den Schwellenwert definiert.
  24. Computerrealisiertes Verfahren zum Verarbeiten eines Nachrichtendatenstroms, wobei das Verfahren aufweist: Erhalten von Nachrichten eines Nachrichtendatenstroms, wobei jede Nachricht eine zugehörige Zeitmarke hat, wobei sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen bezieht; Definieren einer Mehrzahl von Warteschlangen, die mindestens einem Thema zugehörig sind; und Speichern jeder Nachricht in mindestens einer aus der Mehrzahl von Warteschlangen, die dem mindestens einen Thema zugehörig sind, auf das sich die Nachricht bezieht; Speichern jeder Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; Erzeugen einer Zeitmarke, die für eine der Nachricht zugehörige Zeit steht; Zuweisen der erzeugten Zeitmarke zu der Nachricht; Steuern eines Abrufes einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken einer an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen, die nicht die Zielwarteschlange enthalten; für jede der anderen Warteschlangen Ermitteln einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und einer an erster Stelle stehenden Nachricht der Warteschlange; Identifizieren eines größten Wertes einer Zeitdifferenz aus den ermittelten Zeitdifferenzen; Empfangen eines Eingabesignals, das für eine zeitliche Koordinierungsanforderung steht; Ermitteln des Schwellenwerts auf Grundlage des empfangenen Eingabesignals; und Zulassen eines Abrufs der Zielnachricht aus der Zielwarteschlange als Reaktion darauf, dass der größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
  25. System, aufweisend: einen Prozessor; und ein computerlesbares Speichermedium, das mit dem Prozessor kommunikativ gekoppelt wird und Programmanweisungen speichert, die bei Ausführung durch den Prozessor konfiguriert werden, um den Prozessor zu veranlassen: Nachrichten eines Nachrichtendatenstroms zu erhalten, wobei jede Nachricht eine zugehörige Zeitmarke aufweist, wobei sich jede Nachricht auf mindestens eines aus einer Mehrzahl von Themen bezieht; eine Mehrzahl von Warteschlangen zu definieren, die mindestens einem Thema zugehörig sind; und jede Nachricht in mindestens einer aus der Mehrzahl von Warteschlangen zu speichern, die dem mindestens einen Thema zugehörig sind, auf das sich jede Nachricht bezieht; jede Nachricht in mindestens einer aus einer Mehrzahl von Warteschlangen zu speichern, wobei die Nachrichten jeder Warteschlange auf Grundlage ihrer Zeitmarke sortiert werden, sodass eine Nachricht mit der frühesten Zeitmarke an einer ersten Stelle in der Warteschlange platziert wird; eine Zeitmarke zu erzeugen, die für eine der Nachricht zugehörige Zeit steht; die erzeugte Zeitmarke der Nachricht zuzuweisen; einen Abruf einer Zielnachricht aus der ersten Stelle in einer Zielwarteschlange auf Grundlage einer Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und den Zeitmarken einer an erster Stelle stehenden Nachricht jeder der anderen Warteschlangen aus der Mehrzahl von Warteschlangen zu steuern, die nicht die Zielwarteschlange enthalten; für jede der anderen Warteschlangen eine Zeitdifferenz zwischen der Zeitmarke der Zielnachricht und einer an erster Stelle stehenden Nachricht der Warteschlange zu ermitteln; aus den ermittelten Zeitdifferenzen einen größten Wert einer Zeitdifferenz zu identifizieren; ein Eingabesignal zu empfangen, das für eine zeitliche Koordinierungsanforderung steht; auf Grundlage des empfangenen Eingabesignals den Schwellenwert zu ermitteln; einen abgelehnten Abruf der Nachricht aus der Zielwarteschlange zu verzögern; zu ermitteln, dass sich die dem längsten Wert zugehörige Nachricht nicht mehr in ihrer zugehörigen Warteschlange befindet; aus den ermittelten Zeitdifferenzen einen größten Wert einer Zeitdifferenz zu identifizieren; und einen Abruf der Zielnachricht aus der Zielwarteschlange zuzulassen, wenn der verbleibende größte Wert einer Zeitdifferenz kleiner als der Schwellenwert ist.
DE112020003938.2T 2019-08-20 2020-08-18 Verarbeiten eines nachrichtendatenstroms Pending DE112020003938T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/545,121 2019-08-20
US16/545,121 US11055156B2 (en) 2019-08-20 2019-08-20 Processing of a message stream
PCT/IB2020/057774 WO2021033135A1 (en) 2019-08-20 2020-08-18 Processing of a message stream

Publications (1)

Publication Number Publication Date
DE112020003938T5 true DE112020003938T5 (de) 2022-05-19

Family

ID=74645367

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020003938.2T Pending DE112020003938T5 (de) 2019-08-20 2020-08-18 Verarbeiten eines nachrichtendatenstroms

Country Status (5)

Country Link
US (1) US11055156B2 (de)
CN (1) CN114245982A (de)
DE (1) DE112020003938T5 (de)
GB (1) GB2602418B (de)
WO (1) WO2021033135A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113377792A (zh) * 2021-06-10 2021-09-10 上海微盟企业发展有限公司 一种数据回写方法、装置、电子设备和存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790429B2 (ja) * 2001-01-23 2006-06-28 富士通株式会社 パケットスケジューラ
US8265091B2 (en) * 2004-08-18 2012-09-11 Avaya Inc. Traffic multiplexing using timestamping
US8255599B2 (en) * 2006-03-28 2012-08-28 Integrated Device Technology Inc. Packets transfer device having data absorbing buffers with elastic buffer capacities
CA2661379C (en) * 2006-08-22 2014-10-14 Brilliant Telecommunications, Inc. Apparatus and method of controlled delay packet forwarding
US8971184B2 (en) * 2009-06-08 2015-03-03 Arris Enterprises, Inc. Latency based random early discard for network packets
EP2312719B1 (de) * 2009-10-16 2012-08-01 ABB Research Ltd. Untersuchung der zeitlichen Zuverlässigkeit in Zusammenhang mit einer Steuerung eines Energieübertragungssystems
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US8756613B2 (en) 2011-09-23 2014-06-17 International Business Machines Corporation Scalable, parallel processing of messages while enforcing custom sequencing criteria
US9525642B2 (en) 2012-01-31 2016-12-20 Db Networks, Inc. Ordering traffic captured on a data connection
US10122645B2 (en) * 2012-12-07 2018-11-06 Cisco Technology, Inc. Output queue latency behavior for input queue based device
US9038093B1 (en) 2013-03-11 2015-05-19 Sprint Communications Company L.P. Retrieving service request messages from a message queue maintained by a messaging middleware tool based on the origination time of the service request message
US9813528B2 (en) * 2014-07-31 2017-11-07 Splunk Inc. Priority-based processing of messages from multiple servers
JP6313864B2 (ja) * 2014-10-27 2018-04-18 株式会社日立製作所 ストリームデータの処理方法及びストリームデータ処理装置
US10230670B1 (en) 2014-11-10 2019-03-12 Google Llc Watermark-based message queue
US10212120B2 (en) * 2016-04-21 2019-02-19 Confluent, Inc. Distributed message queue stream verification
US10747598B2 (en) * 2016-06-01 2020-08-18 Beijing Yi Zhang Yun Feng Technology Co., Ltd. Synchronization of messages based on queues
US10270726B2 (en) 2017-02-24 2019-04-23 Satori Worldwide, Llc Selective distribution of messages in a scalable, real-time messaging system
CN109032534B (zh) * 2018-08-30 2022-09-13 阿波罗智能技术(北京)有限公司 一种无人车消息传输方法、装置、设备和介质
US11099917B2 (en) * 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
CN109379305B (zh) 2018-11-28 2023-06-23 上海银赛计算机科技有限公司 一种数据下发方法、装置、服务器及存储介质

Also Published As

Publication number Publication date
US11055156B2 (en) 2021-07-06
GB2602418B (en) 2022-10-19
GB202203686D0 (en) 2022-05-04
GB2602418A (en) 2022-06-29
WO2021033135A1 (en) 2021-02-25
CN114245982A (zh) 2022-03-25
JP2022545069A (ja) 2022-10-25
US20210055976A1 (en) 2021-02-25

Similar Documents

Publication Publication Date Title
DE69937715T2 (de) Verbessertes Zwei-Phasen-Bindungsprotokoll
DE102016204680A1 (de) Auswählen von Strategien zum Zuordnen von Ressourcen und Lösen von Ressourcenkonflikten
DE112013004750B4 (de) Verwaltung von Aushungern und Überlastung in einem zweidimensionalen Netz mit Flusskontrolle
DE112020004651B4 (de) Multi-tenant-etl-ressourcenaufteilung
DE3908459C2 (de) Netzwerkserver
DE112011103369B4 (de) Erweitern von Verarbeitungskapazität auf Serverseite
DE112012004999T5 (de) Beschleunigungselement zur Cloud-Bereitstellung
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE10062063B4 (de) Verfahren, System, Computerprogramm-Produkt und Speichervorrichtung zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität
DE112012002631T5 (de) Stream-Verarbeitung unter Verwendung einer Client-Server-Architektur
DE102012223167B4 (de) Gemeinsame Nutzung von Artefakten zwischen kollaborativen Systemen
DE112012003961T5 (de) Gleichzeitige Verarbeitung von eingereihten Nachrichten
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE112020000146T5 (de) Handhabung einer eingabe-/ausgabe-speicheranweisung
DE112011103288B4 (de) Anpassbare, auf Inhalten beruhende Publish/Subscribe-Nachrichtenvermittlung
DE112021003747T5 (de) Erkennen von anomalien in einer netzwerktopologie
DE112015003926T5 (de) Publish/Subscribe-Messaging unter Verwendung einer Nachrichtenstruktur
DE112010004809B4 (de) Mehrfachgranulare Datenstromverarbeitung
DE202019005789U1 (de) Bereitstellung von Ereignisinhalten
DE112020004760T5 (de) Steuern von interaktionen mit einer skalierbaren anwendung
DE60303444T2 (de) Ablaufsteuerung unter verwendung von quantumwerten und defizitwerten
DE112018005359T5 (de) Verhindern eines Beibehaltens von Datensatzsperren durch Transaktionen mit langer Laufzeit
DE112020003938T5 (de) Verarbeiten eines nachrichtendatenstroms
DE112016005220T5 (de) Zugangspunkte für Karten
DE112012005046B4 (de) Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0047627500

Ipc: H04L0047620000