Zum Inhalt springen
Deutsch

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.

RuntimeMindestversionHinweise
Bun1.1Empfohlen für Entwicklung — schnellster Startup, natives SQLite via bun:sqlite, nativer WebSocket-Server.
Node.js20.0Kern 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).
Deno2.0Verwende 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.

Terminal-Fenster
bun add actor-ts

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.

PaketAktiviert
fastify (Default)Fastify-basiertes HttpServerBackend — beste Bun + Node Performance.
expressExpress-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.
Terminal-Fenster
bun add fastify # oder
bun add express # oder
bun add hono @hono/node-server # @hono/node-server ist Node-only
PaketAktiviert
better-sqlite3 (nur Node)SQLite-Journal + Snapshot Store auf Node. Bun verwendet bun:sqlite (eingebaut, keine Peer-Dep).
cassandra-driverCassandra / ScyllaDB Journal + Tag-Index.
@aws-sdk/client-s3S3-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.
PaketAktiviert
ioredisRedis-backed Cache.
memjsMemcached-backed Cache.
PaketAktiviert
kafkajsKafkaActor — Producer + Consumer.
mqttMqttActor.
amqplibAmqpActor — RabbitMQ + AMQP-kompatible Broker.
natsNatsActor — inklusive JetStream-Subjects.
@grpc/grpc-js + @grpc/proto-loaderGrpcClientActor + GrpcServerActor.
wsWebSocketActor (ausgehende Client-Verbindungen).
PaketAktiviert
@kubernetes/client-nodeKubernetesApiSeedProvider + KubernetesLease.

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.

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');
Terminal-Fenster
bun run verify.ts

Erwartete Ausgabe:

pong
install OK

Wenn 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.

  • 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.