
Ereignisbehandlung in Zwischenspeichern - im englischen kurz "eventbuffering" genannt, ist ein Thema beim information retrieval in semantischen Netzen.
Schwierig ist dabei ein Entwurfsmuster (eng. pattern) für eine strukturierte Implementierung zu finden, die dann als Architekturvorgabe in einer konkreten Softwareimplementierung wiederverwendet werden kann. Hier ein Vorschlag für ein Entwurfsmuster.
Modusparameter der Zwischenspeicher:
Es gibt Ereignisse, die über Provider zwischengespeichert werden müssen, bevor mit ihnen eine weitere Verarbeitung angestoßen werden soll. Ein Provider determiniert die Art und Weise wie mit diesen Events umgegangen werden soll. Er muss also über folgende Eigenschaften gesteuert werden können:
maxBufferSize
mit der maximalen Anzahl an Ereignissen, die zwischengespeichert werden können, bevor der Puffer geleert (flushing) werden muss.
Üblicherweise müssen Ereignispuffer auch in einem konstanten Intervall geleert werden; dies wird implementiert durch eine Eigenschaft wie regularFlushInterval
. Natürlich muss es auch möglich sein Ereignisspeicher schneller zu leeren als es in regularFlushInterval
definiert werden kann.
So braucht man daher auch wohl immer eine Eigenschaft wie urgentFlushThreshold
. Wenn also die Anzahl der zwischengespeicherten Ereignisse größer oder gleich der urgentFlushThreshold-Eigenschaft ist, wird der Ereignisspeicher geleert und zwar genau in einem Intervall, das durch eine Eigenschaft wie urgentFlushInterval spezifiziert werden muss.
Wären da also noch zwei Eigenschaften: maxFlushSize
und maxBufferThreads
maxFlushSize
definiert die maximale Anzahl die in einem Leerungsprozess verarbeitet werden maxBufferThreads
definiert die maximale Anzahl der Threads, die für das Leeren verwendet werden können
Bei Interesse oder zum Ideentausch einfach melden!