Zum Inhalt springen
Deutsch

Eigenständige Snippets

Wenn du ein Konzept isoliert sehen willst, sind die eigenständigen Snippets der richtige Ort. Jedes ist eine einzelne Datei, die ein Pattern demonstriert - kein Docker, keine Peers, lauffähig mit bun.

Zu finden unter examples/snippets/ im Repo.

SnippetKonzept
01-counter.tsDer minimale Actor - extends Actor, behandelt zwei Nachrichten-Arten.
02-ask-pattern.tsRequest/Response via ask.
03-supervision.tsEigene Strategie mit decideBy.
04-become-state-machine.tscontext.become(...) für State-Übergänge.
05-event-stream.tsSystemweites PubSub.
06-timers.tscontext.timers für zeitgesteuerte Arbeit.
07-receive-timeout.tsLeerlauf-Erkennung.
08-typed-counter.tsDerselbe Counter via Behaviors.*.
09-routing.tsLokaler Pool-Router.
10-circuit-breaker.tsCircuitBreaker um einen HTTP-Call.
11-backoff-supervisor.tsExponentielles Backoff-Restart.
12-persistent-actor.tsEvent-Sourced Bankkonto.
13-durable-state.tsPersistenz im Snapshot-Stil.
14-projection.tsRead-Side-View via ProjectionActor.
15-cluster-singleton.tsSingleton mit Manager + Proxy.
16-cluster-sharding.tsSharded Entities pro Schlüssel.
17-pubsub.tsCluster-weites DistributedPubSub.
18-distributed-data.tsGCounter + ORSet über den Cluster.
19-saga.tsMehrstufige PersistentFSM.
20-management-http.tsHealth-Checks + /metrics.

Jedes Snippet ist 50-200 Zeilen. Liest sich in ein paar Minuten; verändere es, um mit dem Konzept zu spielen.

Terminal-Fenster
git clone https://github.com/pathosDev/actor-ts.git
cd actor-ts/examples/snippets
bun install
bun 01-counter.ts

Jedes Snippet läuft bis zum Ende und beendet sich. Keine langlaufenden Prozesse; keine externen Abhängigkeiten.

Für cluster-bezogene Snippets (Singleton, Sharding, PubSub, DD) nutzen die Snippets MultiNodeSpec, um einen Cluster innerhalb eines Prozesses zu simulieren - kein Docker nötig.

Die meisten Snippets folgen demselben Aufbau:

import { ActorSystem, ... } from 'actor-ts';
// 1. System + Actors aufsetzen.
const system = ActorSystem.create('demo');
const ref = system.spawnAnonymous(Props.create(() => new MyActor()));
// 2. Ein paar Nachrichten senden.
ref.tell({ ... });
ref.tell({ ... });
// 3. Auf Verarbeitung warten (kleines await oder expect auf einer Probe).
await new Promise(r => setTimeout(r, 100));
// 4. Ergebnis ausgeben + aufräumen.
console.log(...);
await system.terminate();

Für komplexere Flows (Cluster, Persistenz) nutzen die Snippets TestKit + TestProbe für sauberes Teardown.

Snippets sind der einfachste Ort zum Experimentieren:

Terminal-Fenster
# Kopieren, editieren, ausführen:
cp 01-counter.ts my-experiment.ts
# my-experiment.ts editieren
bun my-experiment.ts

Das Framework wird über das actor-ts-Package des lokalen Repos eingebunden - deine Edits laufen gegen die Live-Quelle.

Wenn du ein cleveres Pattern erarbeitet hast, stelle einen PR mit einem Snippet. Kriterien:

  • Eine Datei, ≤ 200 Zeilen.
  • Ein Konzept klar demonstriert.
  • Self-contained - lauffähig ohne externe Services.
  • Kommentare, die erklären, was der Code zeigt.

Vergib deinem Snippet die nächste freie Nummer in der bestehenden Sequenz; aktualisiere die README in snippets/.