Zum Inhalt springen
Deutsch

Von Apache Pekko

Apache Pekko ist der Community-Fork von Akka, den die Apache Software Foundation geschaffen hat, als Akka 2022 seine Lizenzierung änderte. Pekko hält die Akka-2.6-API unter Apache-2.0-Lizenz; zukünftiges Akka ist proprietär.

Für Migrationszwecke gilt Pekko ≈ Akka 2.6 - alles im from-akka-jvm-Guide gilt. Diese Seite behandelt die Pekko-spezifischen Unterschiede.

Pekko ist ein Drop-in-Ersatz für Akka 2.6 mit einer nennenswerten Änderung: alle Paketnamen änderten sich von akka.* zu org.apache.pekko.*.

// Akka:
import akka.actor.Actor
import akka.cluster.sharding.ClusterSharding
// Pekko:
import org.apache.pekko.actor.Actor
import org.apache.pekko.cluster.sharding.ClusterSharding

Ansonsten ist die API identisch zu Akka 2.6.

Behandle deine Pekko-Codebase genauso wie Akka 2.6 - siehe from-akka-jvm für das vollständige Mapping.

Derselbe Konzept-Spickzettel gilt:

Pekkoactor-ts
ActorActor<TMsg>
ActorRefActorRef<T>
ClusterCluster
ClusterShardingClusterSharding
PersistentActorPersistentActor
ClusterSingletonManagerClusterSingletonManager

Pekko ist Apache 2.0 - actor-ts ist ebenfalls permissiv lizenziert. Keine Lizenzkonflikte bei der Migration.

Wie Akka Streams: nicht portiert. Nutze Promise-basierte Patterns oder eine separate Library.

Pekko HTTP → nutze das HTTP-Modul des Frameworks

Abschnitt betitelt „Pekko HTTP → nutze das HTTP-Modul des Frameworks“

Das HTTP-Modul von actor-ts deckt die gängigen Pekko-HTTP-Use-Cases ab - Routing, Marshalling, Middleware. Weniger feature-vollständig (keine compile-time-typisierte Route-DSL wie bei Pekko HTTP), aber einfacher.

actor-ts hat PersistenceQuery mit derselben konzeptionellen Form (Live- + Snapshot-Queries nach PID oder Tag), aber als AsyncIterable statt Stream.

Wie bei Akka:

  1. Nicht alles auf einmal umschreiben - lass actor-ts in einem neuen Service laufen, der das Pekko-System vorlagert.
  2. Einen Bounded Context nach dem anderen - migriere pro Domäne.
  3. Persistenz vorsichtig re-exportieren - Pekkos JSON-Jackson-Events lassen sich via EventAdapter in actor-ts einlesen.

Wenn Pekko für dich funktioniert, migriere nicht - der Use-Case für actor-ts ist:

  • Du willst einen TypeScript-First-Stack statt der JVM.
  • Dein Deployment ist Container-First mit Sub-Sekunden-Startzeit als Anliegen.
  • Du würdest die JVM lieber vermeiden aus operativen Gründen (Memory-Profil, GC-Tuning).

Wenn keiner dieser Punkte zutrifft, ist Pekko eine solide Wahl auf der JVM - bleib dabei.