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 in
examples/
im Repo - die grundlegenden liegen auf oberster Ebene, der Rest in
themenbezogenen Unterverzeichnissen (patterns/, persistence/,
cluster/, fsm/, pubsub/, crdt/, typed/, management/, …).
Was es gibt
Abschnitt betitelt „Was es gibt“| Datei | Konzept |
|---|---|
hello-world.ts | Der minimale Actor - extends Actor, behandelt eine Nachricht. |
ping-pong.ts | Zwei Actors, die eine Nachricht hin- und herspielen. |
bank-account.ts | Request/Response via ask-Pattern. |
supervision.ts | Eigene Strategie mit decideBy. |
become.ts | context.become(...) für State-Übergänge. |
death-watch.ts | Terminated-Benachrichtigungen via Death Watch. |
router.ts | Lokaler Pool-Router, Round-Robin über Worker. |
scheduler.ts | scheduleOnce / scheduleAtFixedRate. |
patterns/timers-heartbeat.ts | Actor-eigene context.timers. |
patterns/stash-init.ts | Stash + Replay während async Initialisierung. |
patterns/circuit-breaker-hello.ts | CircuitBreaker um einen fehleranfälligen Call. |
patterns/backoff-supervisor.ts | Exponentielles Backoff-Restart. |
typed/behaviors-receive.ts | Derselbe Counter via typisierte Behaviors-DSL. |
typed/behaviors-supervise.ts | setup / withTimers / supervise kombiniert. |
fsm/traffic-light.ts | FSM-DSL - when / onEnter / onTransition. |
fsm/order-workflow.ts | Mehrstufige PersistentFSM (Saga). |
persistence/bank-account.ts | Event-Sourced Actor - persist, recover, Snapshot. |
persistence/durable-state-kv.ts | Durable-State-Persistenz (Snapshot-Stil). |
persistence/projection-bank-statement.ts | Read-Side-View via ProjectionActor. |
persistence/replicated-counter.ts | Multi-Master-repliziertes Event-Sourcing. |
cluster/singleton-hello.ts | Cluster-Singleton mit Manager + Proxy. |
cluster/sharded-daemon-hello.ts | Sharded Daemon Process - N Worker nach Index. |
pubsub/chat-mediator.ts | DistributedPubSub auf einem einzelnen Node. |
pubsub/event-bus-across-nodes.ts | Themenbasierter Event-Bus über Nodes. |
crdt/shopping-cart-orset.ts | OR-Set-CRDT - Add-Wins bei nebenläufigen Änderungen. |
management/health-endpoint.ts | /health + /cluster/members-Endpoints. |
management/prometheus-endpoint.ts | /metrics Prometheus-Exposition. |
Jedes Snippet ist 50-200 Zeilen. Liest sich in ein paar Minuten; verändere es, um mit dem Konzept zu spielen.
Ausführen
Abschnitt betitelt „Ausführen“git clone https://github.com/pathosDev/actor-ts.gitcd actor-ts
bun installbun examples/hello-world.tsJedes 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.
Patterns
Abschnitt betitelt „Patterns“Die meisten Snippets folgen demselben Aufbau:
import { ActorSystem, ... } from 'actor-ts';
// 1. System + Actors aufsetzen.const system = ActorSystem.create('demo');const ref = system.spawnAnonymous(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.
Anpassen
Abschnitt betitelt „Anpassen“Snippets sind der einfachste Ort zum Experimentieren:
# Kopieren, editieren, ausführen:cp examples/hello-world.ts examples/my-experiment.ts# examples/my-experiment.ts editierenbun examples/my-experiment.tsDas Framework wird über das actor-ts-Package des lokalen Repos
eingebunden - deine Edits laufen gegen die Live-Quelle.
Snippets beitragen
Abschnitt betitelt „Snippets beitragen“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.
Lege sie für ein grundlegendes Konzept auf oberster Ebene von
examples/ ab, sonst im passenden themenbezogenen Unterverzeichnis;
füge dann eine Zeile zur obigen Tabelle hinzu.
Wohin als Nächstes
Abschnitt betitelt „Wohin als Nächstes“- Examples - Übersicht - größere lauffähige Apps.
- Quickstart - die 5-Minuten-Einführung.
- Fundamentals - Übersicht - die Konzept-Landkarte.
