Zum Inhalt springen
Deutsch

Event Stream

Der Event Stream ist der eigene Bus des Systems. Actor-Lifecycle-Events laufen darüber, jeder Dead Letter wird darauf publiziert, und ebenso alles, was deine Actors selbst publizieren. Dieses Panel ist ein Live-Tail davon.

SpalteBedeutung
seqZähler pro Sitzung; eine Lücke bedeutet verworfene Events
timeWann das Event publiziert wurde
eventKonstruktorname des Events, oder sein typeof
payloadEine einzeilige Vorschau; Klick auf die Zeile zeigt alles

Das Filterfeld greift sowohl auf den Event-Typ als auch auf den Payload-Text zu, sodass OrderPlaced und order-4711 beide den Tail einengen.

Clear leert den Tail und setzt den Verworfen-Zähler zurück.

Um den Tail anzuhalten und ihn zu lesen, nimm Pause in der Kopfzeile — das hält alle Panels auf einmal an, dieses eingeschlossen. Während die Zeit steht publizierte Events werden gehalten und kommen beim Fortsetzen der Reihe nach an; Pausieren kostet dich also nichts außer der Verzögerung.

Der Server installiert seinen Beobachter, wenn dieses Panel abonniert, und entfernt ihn, sobald das letzte verschwindet. Das ist anders als beim Tracing-Panel, das ab dem Anhängen von DevTools aufzeichnet — und der Unterschied ist Absicht: Tracing ist ohnehin schon opt-in, während der Event-Bus immer live ist. Ein dauerhaft installierter Beobachter liefe also bei jedem Actor-Start und -Stopp für ein Panel, das niemand geöffnet hat.

Die Folge: Das Panel öffnet leer und füllt sich, während Events eintreffen. Ein untätiges System zeigt nichts, und das ist kein Fehler.

Der Server puffert Events zwischen den Flushes und verwirft jenseits seiner Obergrenze die ältesten — und sagt dem Panel, wie viele. Das Panel schreibt das über die Tabelle, statt still eine kürzere Liste zu zeigen: Ein Leser zieht Schlüsse aus dem, was nicht da ist, also ist ein Tail, der still überspringt, schlechter als einer, der es zugibt.

Erhöhe den Puffer, wenn dir Events fehlen, die du brauchst:

const devtoolsOptions = DevToolsOptions.create()
.withEventBufferCapacity(2_000)
.withEventFlushIntervalMs(100);

Unter dem Tail steht die Liste der Distributed-PubSub-Topics, die dieser Node kennt. Das ist eine Cluster-Extension, also meldet ein Single-Node-System, dass sie nie gestartet wurde — eine andere Antwort als „gestartet, ohne Topics”. Das Panel unterscheidet beides, statt für beide eine leere Liste zu zeigen.

Nur Topic-Namen: Die CurrentTopics-Antwort des Mediators trägt keine Abonnentenzahlen, und einen Cluster-Wire-Typ für eine Spalte in einem Panel zu ändern ist den Tausch nicht wert.