Zum Inhalt springen
Deutsch

Config Seed Provider

ConfigSeedProvider liefert eine statische Liste von Seed-Adressen — aus einem Constructor-Argument oder Env-Vars. Keine Discovery-Logik; was du konfigurierst, das bekommst du.

import { Cluster, ClusterOptions, ConfigSeedProvider, ConfigSeedProviderOptions } from 'actor-ts';
const configSeedProviderOptions = ConfigSeedProviderOptions.create()
.withSeeds(['10.0.0.5:2552', '10.0.0.6:2552', '10.0.0.7:2552'])
.withSystemName('my-app');
const provider = new ConfigSeedProvider(
configSeedProviderOptions,
);
const seeds = await provider.lookup();
const clusterOptions = ClusterOptions.create()
.withHost(host)
.withPort(port)
.withSeeds(seeds);
await Cluster.join(system, clusterOptions);

Der einfachste Provider für den einfachsten Fall.

type ConfigSeedProviderOptionsType = {
seeds: string[]; // "system@host:port" oder "host:port"
systemName: string; // Standard-Systemname, wenn ein Seed ihn weglässt
};

Zwei Wege, das anzugeben:

// Explizit:
const configSeedProviderOptions = ConfigSeedProviderOptions.create()
.withSeeds(['10.0.0.5:2552', '10.0.0.6:2552'])
.withSystemName('my-app');
new ConfigSeedProvider(
configSeedProviderOptions,
);
// Aus Env (CSV):
seedsFromEnv('ACTOR_TS_SEEDS', 'my-app');
// wobei ACTOR_TS_SEEDS='10.0.0.5:2552,10.0.0.6:2552'

Wähle, was zu deinem Deployment-Muster passt. Env-Vars sind typisch für Container-Deployments, in denen die Liste aus einer ConfigMap / einem Orchestrator kommt.

Drei gute Fits:

  1. Docker Compose — bekannte Service-Namen + Ports; actor-ts-1:2552,actor-ts-2:2552,actor-ts-3:2552 in der Env.
  2. VMs mit festen IPs — drei Produktions-VMs, jede mit stabiler Adresse.
  3. Tests — bekannte Peer-Adressen inline im Test-Setup.