Installation
actor-ts wird als einzelnes npm-Paket ausgeliefert. Der Kern hat
zwei kleine Runtime-Dependencies (ts-pattern für erschöpfendes
Matching, fastify für das Default-HTTP-Backend); alles andere — Kafka,
Redis, S3, Cassandra, gRPC — ist opt-in über Peer-Dependencies, die Du
nur installierst, wenn Du die entsprechende Extension verwendest.
Runtime-Anforderungen
Abschnitt betitelt „Runtime-Anforderungen“| Runtime | Mindestversion | Hinweise |
|---|---|---|
| Bun | 1.1 | Empfohlen für Entwicklung — schnellster Startup, natives SQLite via bun:sqlite, nativer WebSocket-Server. |
| Node.js | 20.0 | Kern funktioniert auf 20+. Node 22+ aktiviert nativen WebSocket ohne ws-Peer-Dep; Node 22.15+ aktiviert native zstd-Kompression ohne fzstd. SQLite via better-sqlite3 (Peer-Dep). |
| Deno | 2.0 | Verwende den npm:-Specifier — import { ... } from 'npm:actor-ts'. Mit --allow-net / --allow-read ausführen, wenn nötig. |
Das Framework erkennt automatisch, unter welcher Runtime es ausgeführt wird, und wählt die richtigen Backends transparent — siehe Runtime Overview für den Erkennungsalgorithmus und die per-Runtime-Vorbehalte.
Core-Installation
Abschnitt betitelt „Core-Installation“bun add actor-tsnpm install actor-ts# oderpnpm add actor-ts# oderyarn add actor-tsKein Installationsschritt nötig. Direkt importieren:
import { Actor, ActorSystem, Props } from 'npm:actor-ts';Deno holt das Paket beim ersten Lauf und cached es. Füge eine
import_map.json hinzu, wenn Du actor-ts über mehrere Dateien
hinweg auf einen kürzeren Specifier aliasen willst.
Optionale Peer-Dependencies
Abschnitt betitelt „Optionale Peer-Dependencies“Jede Integration wird durch eine Peer-Dep gesperrt — installiere nur die, die Du tatsächlich verwendest. Nichts wird automatisch geladen; die relevante Extension wirft einen klaren “missing peer dep”-Fehler, wenn Du versuchst, sie ohne das installierte Paket zu verwenden.
HTTP-Backends
Abschnitt betitelt „HTTP-Backends“| Paket | Aktiviert |
|---|---|
fastify (Default) | Fastify-basiertes HttpServerBackend — beste Bun + Node Performance. |
express | Express-basiertes Backend, für Projekte, die bereits auf Express laufen. |
hono + @hono/node-server (nur Node) | Hono mit runtime-aware Serve-Primitives — Bun.serve, @hono/node-server, Deno.serve pro Runtime. |
bun add fastify # oderbun add express # oderbun add hono @hono/node-server # @hono/node-server ist Node-onlyPersistenz
Abschnitt betitelt „Persistenz“| Paket | Aktiviert |
|---|---|
better-sqlite3 (nur Node) | SQLite-Journal + Snapshot Store auf Node. Bun verwendet bun:sqlite (eingebaut, keine Peer-Dep). |
cassandra-driver | Cassandra / ScyllaDB Journal + Tag-Index. |
@aws-sdk/client-s3 | S3-kompatibles Object-Storage-Backend (funktioniert mit MinIO, R2, Backblaze B2). |
fzstd (optional) | zstd-Kompression für Object-Storage-Blobs, wenn kein nativer Runtime-Support verfügbar ist. |
| Paket | Aktiviert |
|---|---|
ioredis | Redis-backed Cache. |
memjs | Memcached-backed Cache. |
Message Broker
Abschnitt betitelt „Message Broker“| Paket | Aktiviert |
|---|---|
kafkajs | KafkaActor — Producer + Consumer. |
mqtt | MqttActor. |
amqplib | AmqpActor — RabbitMQ + AMQP-kompatible Broker. |
nats | NatsActor — inklusive JetStream-Subjects. |
@grpc/grpc-js + @grpc/proto-loader | GrpcClientActor + GrpcServerActor. |
ws | WebSocketActor (ausgehende Client-Verbindungen). |
Discovery + Koordination
Abschnitt betitelt „Discovery + Koordination“| Paket | Aktiviert |
|---|---|
@kubernetes/client-node | KubernetesApiSeedProvider + KubernetesLease. |
TypeScript-Konfiguration
Abschnitt betitelt „TypeScript-Konfiguration“Füge die folgenden Compiler-Optionen in Deiner tsconfig.json hinzu
(oder verifiziere sie):
{ "compilerOptions": { "target": "ES2022", "module": "ESNext", "moduleResolution": "Bundler", "strict": true, "noImplicitOverride": true, "exactOptionalPropertyTypes": true, "skipLibCheck": true }}Das Framework verlässt sich auf noImplicitOverride, um
Lifecycle-Method-Typo-Bugs zu fangen (z. B. onRecieve statt
onReceive). Lass es weg, wenn Du es vorziehst, aber Du verlierst
dieses Sicherheitsnetz.
Installation verifizieren
Abschnitt betitelt „Installation verifizieren“Speichere das als verify.ts:
import { Actor, ActorSystem, Props } from 'actor-ts';
class Ping extends Actor<'ping'> { override onReceive(msg: 'ping'): void { console.log('pong'); }}
const system = ActorSystem.create('verify');const ref = system.spawnAnonymous(Props.create(() => new Ping()));ref.tell('ping');await new Promise((r) => setTimeout(r, 20));await system.terminate();console.log('install OK');bun run verify.tsnpx tsx verify.tsdeno run verify.tsErwartete Ausgabe:
ponginstall OKWenn Du beide Zeilen siehst, funktioniert die Installation. Wenn
pong fehlt, ist Deine Runtime unter der Mindestversion (siehe die
Tabelle oben auf dieser Seite) — aktualisiere sie und führe erneut
aus.
Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“Wie es weitergeht
Abschnitt betitelt „Wie es weitergeht“- Quickstart — fünf Minuten zu einem laufenden Actor.
- Warum Actors? — die Philosophie hinter dem Framework.
- Lernpfad — empfohlene Lesereihenfolge basierend auf dem, was Du bauen willst.